Ich verwalte Python in der "pyenv" -Umgebung (um genau zu sein "pyenv-virtualenv"). Ich verwende seit einiger Zeit JetBrains-IDEs wie "PyCharm" und "IntelliJ IDEA", aber als IntelliJ IDEA eine eigene virtuelle Python-Umgebung einführte (installiert in einem Verzeichnis namens "$ HOME / pyenv4intelliJ") Es scheint die Python-Umgebung unter Pyenv zu verschmutzen und es startet nicht.
Anscheinend ist das Modul (Pfad, das angibt), das beim Start von Python geladen wird, seltsam. Also, diesmal der Artikel, um dies zu beheben und wieder normal zu machen. Inhaltlich
homebrew.pth
schreibt)Es ist hier. Im Grunde geht es um Python, aber es scheint, dass ein wenig Wissen über Homebrew und Pyenv einfließen wird. Ich habe Probleme mit ähnlichen Fehlermeldungen in den Foren von Python und PyCharm gesehen, daher sollte es einige Leute geben, die Probleme mit diesem Fehler haben ...? Also werde ich kommen.
Schauen wir uns zunächst die Python-Konsole in PyCharm und die Fehlermeldung beim Aufrufen von Python 3 vom Terminal aus an.
Failed to import the site module
Your PYTHONPATH points to a site-packages dir for Python 2.x bet you are running Python 3.x!
#Bei Ausführung von PyCharm ↓
PYTHONPATH is currently: "/Applications/PyCharm.app/Contents/helpers/pydev"
#Bei Ausführung vom Terminal ↓
PYTHONPATH is currently: "$HOME/.pyenv/versions/3.5.1/bin/python"
You should `unset PYTHONPATH` to fix this.
Als ich dann damit herumspielte, änderte sich die Fehlermeldung wie folgt.
$python
Error in sitecustomize; set PYTHONVERBOSE for traceback:
KeyError: 'PYTHONPATH'
Python 3.5.1 (default, May 19 2016, 22:59:42)
[GCC 4.2.1 Compatible Apple LLVM 7.0.2 (clang-700.1.81)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> #Dadurch wird eine interaktive Oberfläche gestartet
Übrigens scheint PYTHONVERBOSE
dasselbe zu sein wie mit $ python -v
mit Optionen zu beginnen. Es wird beim Start zurückverfolgt.
Wenn ich die erste Fehlermeldung lese, sieht es wie eine Warnung aus, dass ich 3.x ausführe, aber 2.x Site-Pakete (Module?) Lade. Die zweite Fehlermeldung scheint zu sein, dass ein Fehler in "sitecustomize.py" aufgetreten ist und "PYTHONPATH" seltsam ist. (Zusammenfassend war dies die gleiche Ursache.)
Lassen Sie uns nun erklären, was das Modul site.py
, sitecustomize.py
und site-packages
sind, die zuvor herausgekommen sind.
(Sie können es überspringen und lesen)
sys.path
festgelegtDieser Bereich wird auf der folgenden Seite ausführlich erläutert.
Ich habe jedoch nicht "PYTHONPATH" festgelegt, und selbst wenn ich ">>> import site; site.USERSITE" über die interaktive Oberfläche ausführe und den in "site.py" festgelegten Pfad überprüfe, ist dies anders. nicht seltsam. Jedoch……
$ python
>>> import sys
>>> sys.path
>>> sys.path
['', '$HOME/.pyenv/versions/3.5.1/lib/python35.zip',
'$HOME/.pyenv/versions/3.5.1/lib/python3.5',
'$HOME/.pyenv/versions/3.5.1/lib/python3.5/plat-darwin',
'$HOME/.pyenv/versions/3.5.1/lib/python3.5/lib-dynload',
'$HOME/.local/lib/python3.5/site-packages',
'/usr/local/lib/python2.7/site-packages',
'$HOME/.pyenv/versions/3.5.1/lib/python3.5/site-packages']
Was? Oh? ?? ?? Aus irgendeinem Grund beziehe ich mich auf den Standardpfad python2.x des Mac-Systems! Das ist die Ursache! !! !! Aber warum beziehen Sie sich auf den 2.x-Pfad ...?
Dann versuchte ich beiläufig "$ Brew Doctor".
Warning: python is symlinked to python3
This will confuse build scripts and in general lead to subtle breakage.
Warning: "config" scripts exist outside your system or Homebrew directories.
`./configure` scripts often look for *-config scripts to determine if
software packages are installed, and what additional flags to use when
compiling and linking.
Having additional scripts in your path can confuse software installed via
Homebrew if the config script overrides a system or Homebrew provided
script of the same name. We found the following "config" scripts:
$HOME/.pyenv/shims/python-config
$HOME/.pyenv/shims/python3-config
$HOME/.pyenv/shims/python3.5-config
$HOME/.pyenv/shims/python3.5m-config
Error in sitecustomize; set PYTHONVERBOSE for traceback:
KeyError: 'PYTHONPATH'
Warning: Your default Python does not recognize the Homebrew site-packages
directory as a special site-packages directory, which means that .pth
files will not be followed. This means you will not be able to import
some modules after installing them with Homebrew, like wxpython. To fix
this for the current user, you can run:
mkdir -p $HOME/.local/lib/python3.5/site-packages
echo 'import site; site.addsitedir("/usr/local/lib/python2.7/site-packages")' >> $HOME/.local/lib/python3.5/site-packages/homebrew.pth
Es ist ein bisschen lang, aber als ich den englischen Text las,
Your default Python does not recognize the Homebrew site-packages directory
as a special site-packages directory, # ... (Folgendes wird weggelassen)
…… Der Standard-Python (= python3.5.1 unter pyenv) scheint keine Site-Pakete laden zu können, die von homebrew erstellt wurden (= wahrscheinlich in einem Verzeichnis unter $ HOME / .pyenv erstellt). Es scheint eine Sache zu sein.
Schätze ich. Ja ich weiß.
Wenn Sie den Pfad, den Sie mit "import sys" überprüft haben, mit der Python-bezogenen Warnung kombinieren, die mit "Brew Doctor" ausgegeben wurde, sehen Sie Folgendes.
site.py
festgelegt$ HOME / .pyenv
) → AbnormalWahrscheinlich ruft der Pfad, den Sie von Homebrew aus festgelegt haben, Site-Pakete in 2.x auf.
Der Pfad, den Sie in diesem homebrew
sehen, befindet sich in der Datei homebrew.pth
in $ HOME / .local / lib / python3.5 / site-packages
. (Und site.py
lädt dieses homebrew.pth
. Vielleicht.)
Wenn ich das Innere öffne ...
homebrew.pth
import site; site.addsitedir("/usr/local/lib/python2.7/site-packages")
Bingo! !! !! Immerhin war es das! !! !! !! Wenn Sie diesen Inhalt auskommentieren oder löschen ...
Python ist zurück! !! !! !! PyCharm erkennt und startet auch normal! !! !! !!
Wie oben erwähnt, lesen Sie bitte, wenn Sie Probleme mit einem ähnlichen Fehler haben.