2016-05-21 18 views
7

Kann nichts aus sechs importieren. Beide Linien ergeben Fehler:Kann nicht aus Python sechs Bibliothek importieren

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, Six 1.10.0.

Was ich versuchen getan zu beheben (pro PyCharm shows unresolved references error for valid code und andere Beiträge):

  • Switched Python Dolmetscher
  • IntelliJ: löschte die Idee Datei
  • IDE -> Invalidate Caches/Restart
  • ein völlig neues Projekt mit derselben Quelle Erstellt
  • IDEs Switched (IntelliJ -> PyCharm)
  • Verifiziert sechs ist Strom:

_

$ 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 SDKs Ich habe versucht:

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) 

Nichts funktionierte. Hilfe wäre willkommen! Vielen Dank.

---------- Aktualisierung 23. Mai 2016 -------------------------------

Das Ausführen der Importzeilen "from six.moves ..." von der Befehlszeile führt nicht zu Fehlern. Die Befehlszeile ruft Python 2.7.11 auf. PyCharm verwendet auch Python 2.7.11, und PyCharm zeigt auch, dass sechs verfügbar sind - siehe ersten Screenshot. Es gibt keine .pyc-Dateien im Projekt, nur main.py. enter image description here Seltsamerweise läuft Main.py ohne Fehler innerhalb PyCharm; die Zeile "Hello" wird gedruckt (siehe zweiter Screenshot). File runs OK Dieser Screenshot zeigt den Projekt-Interpreter in den Einstellungen: enter image description here Ich bin immer noch ratlos.

---------- Aktualisierung 24. Mai 2016 -----------------------------

import six funktioniert ohne Fehler in der Code-und der Python-Shell und nach der Ausführung, sechs. Datei = /Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/six-1.10.0-py2.7.egg/six.pyc. Die PyCharm IDE zeigt jedoch immer noch die Fehler in den Importleitungen von six.moves.

+0

Sind die Zeilen, die Sie im Code anzeigen, die Sie laden und ausführen möchten? Haben Sie versucht, diese Zeilen in eine Python-Shell einzugeben? –

+0

Ja, die obigen Importzeilen sind in Code, den ich ausführen möchte. Ich habe noch nicht einmal den Betriebscode eingegeben, ich habe nur versucht, alle Importe zuerst zu bekommen. Dieser Code stammt aus einem Google Tensorflow-Lernprogramm. Wenn ich diese Zeilen in eine Python-Shell eintippe, bekomme ich keinen Fehler, also sind das vielleicht nur Warnungen, die ich ignorieren kann, wie Burhan unten andeutet? –

+0

Also, Burhan sagt Ihnen, dass Sie den Python-Interpreter ausführen müssen, der ungefähr sechs kennt, um ihn zu importieren. Anscheinend erhalten Sie das, wenn Sie eine Shell über die Befehlszeile starten. Sie müssen herausfinden, wie PyCharm oder IntelliJ oder welches Werkzeug Sie verwenden möchten, führen Sie den Interpreter aus, der ungefähr sechs kennt, damit der Import funktioniert. Wenn es sich um das Caching-Problem handelt, das er erwähnt, sollte der Fehler mit einem Cache-Neuaufbau wegfallen. Versuchen Sie, Dateien namens * .pyc und Verzeichnisse namens __pycache__ zu entfernen und sehen Sie, ob das hilft. –

Antwort

1

Diese Frage scheint von this one beantwortet zu werden (Ich weiß nicht, wie man diesen als doppelt markiert).

Also leider gibt es keine leicht Lösung wegen der Dynamik des „sechs“ -Modul, wenn Sie Ihr eigenes Python-Skelett für dieses Modul implementieren (was nicht ist, was straithforward).

1

six ist nur bei /Library/Frameworks/Python.framework/Versions/2.7/bin/python2.7 installiert, so dass es funktioniert nur, wenn Sie, dass Dolmetscher in PyCharm/IntelliJ verwenden

Hinweis, wenn Sie eine neue virtuelle Umgebung schaffen, werden Sie six in separat installieren.

Wenn PyCharm/IntelliJ Ihnen diese Warnungen gibt, aber der Code tatsächlich läuft - dann ist dies nur ein Caching-Problem mit PyCharm und Sie können es sicher ignorieren - Chancen stehen beim nächsten Cachebildup PyCharm wird seinen Cache aktualisieren.

0

Sie können import six anstelle von six.moves importieren cPickle verwenden und dann six.moves.cPickle verwenden.

Es funktioniert für mich.