运行python3时,"在Python 3上无法访问此包"

use*_*614 32 python macos

在学习我可以在我的Mac上使用python和python3之前,我试图使用virtualenv在python版本之间切换.

我能够修复我的python 2.7版本,所以仍然可以正常工作,现在当我运行python3时,我收到此错误:

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.
Run Code Online (Sandbox Code Playgroud)

我在网上看到了这个错误,但大多数谈话都在修复补丁然后升级virtualenv.但是,这仍然无法解决我的问题.

python3 -V: Python 3.6.0
virtualenv --version: 15.1.0
env | egrep -i 'python|virtualenv': PYTHONPATH=/usr/local/lib/python2.7/site-packages:
Run Code Online (Sandbox Code Playgroud)

Cha*_*ffy 84

您的环境包含 PYTHONPATH=/usr/local/lib/python2.7/site-packages

出于显而易见的原因,这不适用于Python 3.要删除它:

unset PYTHONPATH
Run Code Online (Sandbox Code Playgroud)

  • 出于某种原因,每次我需要使用python3时都必须取消它.有什么方法可以让它永久化吗? (3认同)
  • 但我想保留python和python3.取消设置会影响我的python(2.7)吗? (2认同)

anj*_*505 15

我用下面的命令解决了我的问题

sudo pip install virtualenv --upgrade
virtualenv -p python3 env
Run Code Online (Sandbox Code Playgroud)

  • 仅供参考,用于复制粘贴,这将创建一个名为Python的虚拟环境,运行Python 3,然后您可以通过激活w / source env / bin / activate来使用它。您还需要注意`deactivate`和`python哪个命令在Python环境中跳转。鉴于OP希望在Python 2x和Python 3x之间切换,这是最好的方法。 (2认同)