“Ce paquet ne doit pas être accessible sur Python 3” lors de l'exécution de python3
J'ai essayé d'utiliser virtualenv pour basculer entre les versions de python, avant d'apprendre que je pouvais utiliser python et python3 sur mon Mac.
J'ai pu réparer ma version de python 2.7 pour que fonctionne toujours très bien cependant, maintenant, quand je lance python3, j'obtiens cette erreur:
Failed to import the site module
Traceback (most recent call last):
File "/usr/local/Cellar/python3/3.6.0/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site.py", line 544, in <module>
main()
File "/usr/local/Cellar/python3/3.6.0/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site.py", line 530, in main
known_paths = addusersitepackages(known_paths)
File "/usr/local/Cellar/python3/3.6.0/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site.py", line 282, in addusersitepackages
user_site = getusersitepackages()
File "/usr/local/Cellar/python3/3.6.0/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site.py", line 258, in getusersitepackages
user_base = getuserbase() # this will also set USER_BASE
File "/usr/local/Cellar/python3/3.6.0/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site.py", line 248, in getuserbase
USER_BASE = get_config_var('userbase')
File "/usr/local/Cellar/python3/3.6.0/Frameworks/Python.framework/Versions/3.6/lib/python3.6/sysconfig.py", line 601, in get_config_var
return get_config_vars().get(name)
File "/usr/local/Cellar/python3/3.6.0/Frameworks/Python.framework/Versions/3.6/lib/python3.6/sysconfig.py", line 580, in get_config_vars
import _osx_support
File "/usr/local/Cellar/python3/3.6.0/Frameworks/Python.framework/Versions/3.6/lib/python3.6/_osx_support.py", line 4, in <module>
import re
File "/usr/local/Cellar/python3/3.6.0/Frameworks/Python.framework/Versions/3.6/lib/python3.6/re.py", line 125, in <module>
import functools
File "/usr/local/Cellar/python3/3.6.0/Frameworks/Python.framework/Versions/3.6/lib/python3.6/functools.py", line 21, in <module>
from collections import namedtuple
File "/usr/local/Cellar/python3/3.6.0/Frameworks/Python.framework/Versions/3.6/lib/python3.6/collections/__init__.py", line 32, in <module>
from reprlib import recursive_repr as _recursive_repr
File "/usr/local/lib/python2.7/site-packages/reprlib/__init__.py", line 7, in <module>
raise ImportError('This package should not be accessible on Python 3. '
ImportError: This package should not be accessible on Python 3. Either you are trying to run from the python-future src folder or your installation of python-future is corrupted.
J'ai regardé en ligne pour cette erreur, mais la plupart de la conversation était sur la fixation de la pièce et ensuite la mise à niveau de virtualenv. Cependant, ce n'est toujours pas résolu mon problème.
python3 -V: Python 3.6.0
virtualenv --version: 15.1.0
env | egrep -i 'python|virtualenv': PYTHONPATH=/usr/local/lib/python2.7/site-packages:
- Ajoutez la sortie de
env | egrep -i 'python|virtualenv'
à votre question - ajout de la sortie
Vous devez vous connecter pour publier un commentaire.
Votre environnement contient
PYTHONPATH=/usr/local/lib/python2.7/site-packages
Cela ne fonctionne pas avec Python 3 pour des raisons évidentes. Pour l'enlever:
site-packages
dans sonsys.path
par défaut. Donc, si la suppression dePYTHONPATH
les pauses de votre Python 2.7, puis quelque chose au sujet de votre Python 2.7 installation était déjà cassé.PS4=':$BASH_SOURCE:$LINENO+' bash -x -l -i
, et de trouver les références àPYTHONPATH
dans la sortie; chaque ligne sera préfixé par le nom du fichier source et le numéro de ligne où il vient. Ce n'est pas tout à fait sûr que cela va vous dire où elle est définie (peut être quelque chose comme des modules PAM qui sont invoquées devant votre shell est lancé), mais c'est un bon endroit pour commencer.J'ai résolu mon problème avec la commande ci-dessous
env
l'exécution de Python 3, que vous pouvez ensuite utiliser en activant w/source env/bin/activate
. Vous devez aussi être conscient de ladeactivate
etwhich python
commandes à sauter autour de Python envs. Compte tenu de l'OP souhaite basculer entre Python 2x et Python 3x, c'est la meilleure approche.