Seit dem Update von Homebrew Python 2.7.11 (von 2.7.10) kann ich mein Paket plötzlich nicht mehr über die PyCharm IDE-Konsole auf PyPi registrieren.
Laufen (als "externes Tool")
python -B setup.py register -r pypitest
Ich verstehe jetzt
Traceback (most recent call last):
File "setup.py", line 22, in <module>
from setuptools import setup
File "/usr/local/lib/python2.7/site-packages/setuptools/__init__.py", line 12, in <module>
from setuptools.extension import Extension
File "/usr/local/lib/python2.7/site-packages/setuptools/extension.py", line 8, in <module>
from .dist import _get_unpatched
File "/usr/local/lib/python2.7/site-packages/setuptools/dist.py", line 16, in <module>
from setuptools.depends import Require
File "/usr/local/lib/python2.7/site-packages/setuptools/depends.py", line 6, in <module>
from setuptools import compat
File "/usr/local/lib/python2.7/site-packages/setuptools/compat.py", line 17, in <module>
import httplib
File "/usr/local/Cellar/python/2.7.11/Frameworks/Python.framework/Versions/2.7/lib/python2.7/httplib.py", line 80, in <module>
import mimetools
File "/usr/local/Cellar/python/2.7.11/Frameworks/Python.framework/Versions/2.7/lib/python2.7/mimetools.py", line 6, in <module>
import tempfile
File "/usr/local/Cellar/python/2.7.11/Frameworks/Python.framework/Versions/2.7/lib/python2.7/tempfile.py", line 32, in <module>
import io as _io
File "/usr/local/Cellar/python/2.7.11/Frameworks/Python.framework/Versions/2.7/lib/python2.7/io.py", line 51, in <module>
import _io
ImportError: dlopen(/usr/local/Cellar/python/2.7.11/Frameworks/Python.framework/Versions/2.7/lib/python2.7/lib-dynload/_io.so, 2): Symbol not found: __PyCodecInfo_GetIncrementalDecoder
Referenced from: /usr/local/Cellar/python/2.7.11/Frameworks/Python.framework/Versions/2.7/lib/python2.7/lib-dynload/_io.so
Expected in: flat namespace
in /usr/local/Cellar/python/2.7.11/Frameworks/Python.framework/Versions/2.7/lib/python2.7/lib-dynload/_io.so
Process finished with exit code 1
Ich bin mir nicht sicher, wie ich vorgehen soll. Ich bekomme dieses Problem nur, wenn ich es über die Konsole meiner IDE ausführe. Wenn ich es direkt über die Systembefehlszeile (Terminal unter OS X) mache, habe ich keine Probleme.
OS X 10.11.3; Homebrew Python 2.7.11; PyCharm 5.0.3
python
python-2.7
pycharm
setuptools
orome
quelle
quelle
Antworten:
tl; dr: Beheben Sie dieses Problem, indem Sie einen der folgenden Schritte ausführen:
hash -r python
, ODEREDIT: Eine Antwort auf meine verwandte Frage macht deutlich, was hier passiert. Wenn Sie eine neue Version von Python installieren, müssen Sie möglicherweise ausführen
hash -r python
, um bash anzuweisen, den "zwischengespeicherten" Speicherort auf diepython
ausführbare Datei zurückzusetzen.In meinem Fall tippte ich
python
, was auf meinem$PATH
at war/usr/local/bin/python
.bash
Verwendete aber immer noch den alten Cache-Speicherort/usr/bin/python
. Also wurde die alte ausführbare Datei aufgerufen, aber der neue Pfad wurde für Python bereitgestelltsys.argv[0]
. Dies bedeutet, dass die alte ausführbare Datei ausgeführt wurde, der neuesys.executable
Wert jedoch dazu führte, dass alle falschen Module (einschließlich desio
Moduls) geladen wurden .Ich habe das gleiche Problem. Ich habe Python 2.7.11 über ein Installationsprogramm von Python.org installiert. Seltsamerweise scheint das Problem mit einem subtilen Unterschied zwischen dem Start von OSX
python
beim Aufrufen der Shell über den vollständigen Pfad und der Verwendung nur des Wortes zu zusammenhängenpython
.Für mich funktioniert dies also (Python über den vollständigen Pfad aufrufen
/usr/local/bin/python
):$ which python /usr/local/bin/python $ /usr/local/bin/python -c "import io" $
... aber das geht nicht:
$ python -c "import io" Traceback (most recent call last): File "<string>", line 1, in <module> File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/io.py", line 51, in <module> import _io ImportError: dlopen(/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/lib-dynload/_io.so, 2): Symbol not found: __PyCodecInfo_GetIncrementalDecoder Referenced from: /Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/lib-dynload/_io.so Expected in: flat namespace in /Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/lib-dynload/_io.so
Um dieses Problem zu umgehen, können Sie versuchen, dasselbe zu tun.
An anderer Stelle habe ich eine separate Frage zu diesem rätselhaften Verhalten gestellt. Vielleicht
python
ruft das bloße Aufrufen irgendwie eine seltsame Mischung der ausführbaren Datei 2.7.11 mit den Dylibs 2.7.10 auf?quelle
hash -r python
zu viele Argumente angegeben sind, können Sie denrehash
Befehl verwenden.Laut https://github.com/klen/python-mode/issues/634 :
und
Dies gibt jedoch nicht die Grundursache an. Da dies passiert
_io
, sieht dies aus wie ein Fehler in Python 2.7.11 (unwahrscheinlich, dass es zu einem Aufschrei im Weltmaßstab und einer sofortigen Behebung kommen würde) oder ein Verpackungsfehler oder eine Versionsinkongruenz speziell mit der Homebrew-Version (und möglicherweise einigen) auch verwandte).Versuchen Sie es
import _io
in der Konsole. Wenn dies erfolgreich ist, überprüfen Sie, ob es aus demselben Pfad geladen wurde.quelle
sys.path
auf Unterschiede.hash
Cache von bash sofort nach der Installation einer neuen Python-Version falsch werden kann. (Versuchen Sietype python
zu überprüfen, ob dies das Problem ist.) Die von Ihnen angegebene Person hat dies möglicherweise versehentlich durch alle beschriebenen Deinstallationen / Neuinstallationen behoben. Die einfache Lösung besteht jedoch darin,hash -r python
in das Terminal einzugeben.Installieren Sie Python neu.
Sichern Sie den Weg
SICHERN und Ändern Sie die Reihenfolge der "Pfade" -Datei.
Es scheint, die Reihenfolge der Pfade, es ist entscheidend, Python richtig auszuführen. In meinem Fall war das Ergebnis:
#sudo nano /etc/paths /usr/bin /usr/local/bin /bin /usr/sbin /sbin
Auf meinem Mac ist der Pfad so.
Jetzt kann ich beide ausführen:
$ /usr/local/bin/python -c "import io" $ python -c "import io"
quelle
Ich hatte das gleiche Problem, es wurde erfolgreich behoben, indem nur die Datei _io.so ersetzt wurde.
Kopieren Sie den Pfad der
_io.so
Datei, die NICHT zu Python-2.7.11 gehört. Kopieren Sie beispielsweise den Pfad von _io.so unter python-2.7.5: /usr/local/Cellar/python/2.7.5/Frameworks/Python.framework/Versions/2.7/lib/python2.7/lib- dynload / _io.soErsetzen Sie die
/usr/local/Cellar/python/2.7.11/Frameworks/Python.framework/Versions/2.7/lib/python2.7/lib-dynload/_io.so
Datei durch die_io.so
gerade gefundene.quelle
Das ist mir auch in MacVim passiert. Ich löste es , indem sichergestellt
:python print(sys.path)
wird unter Verwendung von System Python (zB/Library/Python/2.7/...
)Da ich MacVim über Homebrew installiert habe, habe ich das einfach so gemacht:
Spawn eine neue Shell, die
which python
-> hatte/usr/bin/python
. Für meinen Fall musste ich diepyenv
Linie von meinem entfernen.bash_profile
. Wenn Sie Python über Homebrew installiert haben, möchten Sie möglicherweisebrew unlink python
zuerstbrew reinstall macvim
quelle
Wenn Ihr Problem durch verursacht wird
anaconda
, ist es nicht erforderlich, das//anaconda
Verzeichnis zu entfernen .Öffnen Sie einfach Ihre
~/.bash_profile
, finden Sie die Linieexport PATH="//anaconda/bin:$PATH
und kommentieren Sie es aus, und starten Sie dann Ihre Terminalsitzung neu.
quelle
Eine weitere schnelle Problemumgehung, wenn Sie nichts dagegen haben, bei Python 2.7.10 zu bleiben, besteht darin, den Pfad der ausführbaren Python-Interpreter-Datei anzugeben, die für die virtuelle Umgebung verwendet wird. Unter OSX lautet dieser Pfad normalerweise
/usr/bin/python
:quelle
Ich kann keinen Kommentar (?) Hinzufügen, daher funktioniert dies nur, um meine Erfahrung zu teilen. Ein Downgrade auf 2.7.10 funktioniert für mich.
quelle
Ich habe diesen Fehler nach einem fehlgeschlagenen NLTK-Download erhalten. Ich musste anaconda deinstallieren:
quelle
Dies geschah, als ich bereits versucht hatte, ein Venv in einem Ordner zu erstellen, und fälschlicherweise versuchte, ein zweites zu initialisieren! Also habe ich gerade das venv-Verzeichnis entfernt und den Befehl erneut ausgeführt. Sehr wahrscheinlich ist dies nicht die Antwort auf diese Lösung, aber die Suche nach meinem Fehler hat mich hierher gebracht, sodass es einigen anderen helfen kann, die nicht weiterkommen.
quelle
Ich habe dieses Problem gelöst, indem ich den symbolischen Link entfernt
/usr/local/bin
und die eigentliche Python-Binärdatei kopiert habe, auf die dieser Link dort verwiesen hat.quelle
Ich hatte das gleiche Problem, als ich versuchte, PyCharm zu verwenden. Gelöst durch Festlegen von "Python Interpreter" in der Projektkonfiguration, um auf die virtuelle Python-Umgebung zu verweisen, die ich verwenden wollte, nämlich eine Anaconda-Umgebung. Irgendwie fehlte dem Interpreterpfad der "Anaconda" -Teil von ~ /.../ anaconda /.../_ io.so. Anaconda muss nicht deinstalliert werden.
quelle