2016-05-21 20 views
7

Impossibile importare nulla da sei. Entrambe queste linee di snervamento errori:Impossibile importare dalla libreria Python sei

from six.moves.urllib.request import urlretrieve 

->Unresolved reference "urlretrieve"

from six.moves import cPickle as pickle 

->Unresolved reference "cPickle"

OSX 10.11.5. IntelliJ 2016.1.2, PyCharm 2016.1.3, Python 2.7.11, Sei 1.10.0.

Quello che ho fatto per tentare di risolvere (per PyCharm shows unresolved references error for valid code e altri posti):

  • Switched interpreti Python
  • IntelliJ: eliminato il file idea
  • IDE -> Disattiva Caches/Restart
  • creato un progetto completamente nuovo con la stessa fonte
  • Switched IDE (IntelliJ -> PyCharm)
  • Verificati sei è in corso:

_

$ sudo pip install -U six 
Requirement already up-to-date: six in /Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/six-1.10.0-py2.7.egg 

Python SDK ho provato:

Python 2.7.11 (/Library/Frameworks/Python.framework/Versions/2.7/bin/python2.7) 
Python 3.5.1 (/Library/Frameworks/Python.framework/Versions/3.5/bin/python3.5) 
Python 2.7.10 (/usr/local/bin/python2.7) 

Niente ha funzionato. L'aiuto sarebbe benvenuto! Grazie.

---------- Aggiornamento 23 maggio 2016 -------------------------------

L'esecuzione delle righe di importazione "da sei mosse ..." dalla riga di comando non produce errori. La riga di comando richiama Python 2.7.11. PyCharm utilizza anche Python 2.7.11 e PyCharm mostra anche che sei è disponibile - guarda la prima schermata. Non ci sono file .pyc nel progetto, solo main.py. enter image description here Stranamente, main.py viene eseguito senza errori in PyCharm; la linea "Hello" viene stampata (vedere la seconda schermata). File runs OK Questa schermata mostra l'interprete di progetto nelle impostazioni: enter image description here Sono ancora perplesso.

---------- Aggiornamento 24 maggio 2016 -----------------------------

import six funziona senza errori sia nel codice che nella shell python e dopo l'esecuzione, sei. file = /Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/six-1.10.0-py2.7.egg/six.pyc. Tuttavia, l'IDE PyCharm mostra ancora gli errori nelle sei righe di importazione.

+0

Le linee che stai visualizzando nel codice che stai tentando di caricare ed eseguire? Hai provato a digitare queste linee in una shell python? –

+0

Sì, le righe di importazione sopra sono nel codice che voglio eseguire. Non ho ancora inserito il codice operativo, stavo solo cercando di far funzionare tutte le importazioni prima. Questo codice proviene da un tutorial di Google Tensorflow. Quando digito quelle linee in una shell python non ottengo alcun errore, quindi forse questi sono solo avvertimenti che posso ignorare come suggerisce Burhan qui sotto? –

+0

Quindi, quello che Burhan sta dicendo è che è necessario eseguire l'interprete Python che ne conosce sei per poterlo importare. Apparentemente, è quello che si ottiene quando si avvia una shell dalla riga di comando. Hai bisogno di capire come creare PyCharm o IntelliJ o qualsiasi altro strumento tu voglia usare l'interprete che ne sa circa sei perché l'importazione funzioni. Se si tratta del problema di memorizzazione nella cache, menziona, l'errore dovrebbe andare via con una ricostruzione della cache. Prova a rimuovere i file denominati * .pyc e le directory denominate __pycache__ e controlla se questo aiuta. –

risposta

1

Questa domanda sembra essere risposta da this one (non so come contrassegnare questo come duplicato).

Quindi, purtroppo, non esiste una soluzione semplice a causa della natura dinamica del modulo "sei" a meno che non si implementi il ​​proprio python-skeleton per questo modulo (che non è quello straithforward).

1

six è installato solo in /Library/Frameworks/Python.framework/Versions/2.7/bin/python2.7, in modo da funzionare solo se si utilizza che interprete PyCharm/IntelliJ

nota, se si crea un nuovo ambiente virtuale, dovrete installare six in separatamente.

Se PyCharm/IntelliJ ti sta dando questi avvertimenti, ma il codice viene effettivamente eseguito - questo è solo un problema di cache con PyCharm e puoi tranquillamente ignorarlo - è probabile che nella prossima ricostruzione della cache PyCharm aggiornerà la cache.

0

È possibile utilizzare l'importazione sei invece che da sei.molti importare cPickle, quindi utilizzare six.moves.cPickle.

Funziona per me.