Je gère Python dans l'environnement pyenv
(pour être exact, pyenv-virtualenv
).
J'avais l'habitude d'utiliser JetBrains IDE tel que PyCharm
ou ʻIntelliJ IDEA pendant un certain temps, mais quand IntelliJ IDEA a introduit son propre environnement virtuel Python (installé dans le répertoire
$ HOME / pyenv4intelliJ`) , Il semble polluer l'environnement python sous pyenv et il ne démarre pas.
Apparemment, le module (Path qui spécifie) qui est chargé au démarrage de Python est étrange. Donc, cette fois, l'article pour résoudre ce problème et le ramener à la normale. En termes de contenu
--Détails des détails de l'erreur / enquête sur la cause
homebrew.pth
)Ce n'est pas ici. Il s'agit essentiellement de python, mais il semble qu'un peu de connaissance de Homebrew et de pyenv viendra. J'ai vu des problèmes avec des messages d'erreur similaires sur les forums de Python et PyCharm d'origine, donc il devrait y avoir pas mal de gens qui ont des problèmes avec cette erreur ... Alors, je viendrai.
Tout d'abord, examinons la console Python dans PyCharm et le message d'erreur lors de l'appel de Python 3 à partir du terminal.
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!
#Lorsqu'il est exécuté à partir de PyCharm ↓
PYTHONPATH is currently: "/Applications/PyCharm.app/Contents/helpers/pydev"
#Lorsqu'il est exécuté depuis le terminal ↓
PYTHONPATH is currently: "$HOME/.pyenv/versions/3.5.1/bin/python"
You should `unset PYTHONPATH` to fix this.
Ensuite, lorsque j'ai joué avec, le message d'erreur a changé comme suit.
$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.
>>> #Cela lancera une interface interactive
Au fait, PYTHONVERBOSE
semble être la même chose que commencer par $ python -v
avec des options. Il remontera au démarrage.
Quand je lis le premier message d'erreur, cela ressemble à un avertissement indiquant que j'exécute 3.x mais que je charge des packages de site 2.x (modules?).
Le deuxième message d'erreur semble être qu'une erreur s'est produite dans sitecustomize.py
et PYTHONPATH
est étrange.
(En conclusion, c'était la même cause.)
Maintenant, expliquons ce que sont le module site.py
, sitecustomize.py
et site-packages
qui sont sortis plus tôt.
(Vous pouvez le sauter et le lire)
sys.path
sys.path
en exécutant site.py
au démarragesitecustomize.py
ou ʻusersitecustomize.py`Cette zone est expliquée en détail à la page suivante.
brew doctor
Cependant, je n'ai pas défini PYTHONPATH
, et même si je lance >>> import site; site.USERSITE
à partir de l'interface interactive et vérifie le chemin défini dans site.py
, c'est différent. pas étrange.
Pourtant……
$ 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']
Quoi? Oh? ?? ?? Pour une raison quelconque, je fais référence au chemin python2.x par défaut du système Mac! Telle est la cause! !! !! Mais pourquoi faites-vous référence au chemin 2.x ...?
Ensuite, j'ai essayé "$ 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
C'est un peu long, mais en lisant le texte anglais,
Your default Python does not recognize the Homebrew site-packages directory
as a special site-packages directory, # ... (Ce qui suit est omis)
…… Le Python par défaut (= python3.5.1 sous pyenv) ne semble pas pouvoir lire les paquets de sites créés par homebrew (= probablement créés dans un répertoire sous $ HOME / .pyenv). Cela semble être une chose.
Je suppose. Ouais je sais.
Si vous combinez le chemin que vous avez vérifié avec ʻimport sys et l'avertissement relatif à Python qui est sorti avec
brew doctor`, vous pouvez voir ce qui suit.
site.py
appelé par Python → Normal$ HOME / .pyenv
) → AnormalLe chemin que vous avez défini à partir de homebrew appelle probablement site-packages dans 2.x.
Le chemin que vous voyez dans ce homebrew
est dans le fichier homebrew.pth
dans $ HOME / .local / lib / python3.5 / site-packages
. (Et site.py
charge ce homebrew.pth
. Peut-être.)
Quand j'ouvre l'intérieur ...
homebrew.pth
import site; site.addsitedir("/usr/local/lib/python2.7/site-packages")
bingo! !! !! Après tout, c'était ça! !! !! !! Si vous commentez ou supprimez ce contenu ...
Python est de retour! !! !! !! PyCharm reconnaît également et démarre normalement! !! !! !!
Comme mentionné ci-dessus, si vous rencontrez des problèmes avec une erreur similaire, veuillez vous y référer.
Recommended Posts