将 Python3 传递给 virtualenvwrapper 会抛出 ImportError

Passing Python3 to virtualenvwrapper throws up ImportError

我正在尝试使用 virtualenvwrapper 制作基于 python 3 的 virtualenv。但是,当我传递可选的解释器参数时,我看到了这个错误。我 运行 Ubuntu 15.04。我尝试重新安装 virtualenvvirtualenvwrapper 但没有成功。感谢您的帮助!

$ mkvirtualenv scriptcutter --python=/usr/bin/python3
Running virtualenv with interpreter /usr/bin/python3
Traceback (most recent call last):
  File "/usr/local/lib/python2.7/dist-packages/virtualenv.py", line 8, in <module>
    import base64
  File "/usr/lib/python3.4/base64.py", line 9, in <module>
    import re
  File "/usr/lib/python3.4/re.py", line 336, in <module>
    import copyreg
  File "/usr/local/lib/python2.7/dist-packages/copyreg/__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.
Error in sys.excepthook:
Traceback (most recent call last):
  File "/usr/lib/python3/dist-packages/apport_python_hook.py", line 53, in apport_excepthook
    if not enabled():
  File "/usr/lib/python3/dist-packages/apport_python_hook.py", line 24, in enabled
    import re
  File "/usr/lib/python3.4/re.py", line 336, in <module>
    import copyreg
  File "/usr/local/lib/python2.7/dist-packages/copyreg/__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.

Original exception was:
Traceback (most recent call last):
  File "/usr/local/lib/python2.7/dist-packages/virtualenv.py", line 8, in <module>
    import base64
  File "/usr/lib/python3.4/base64.py", line 9, in <module>
    import re
  File "/usr/lib/python3.4/re.py", line 336, in <module>
    import copyreg
  File "/usr/local/lib/python2.7/dist-packages/copyreg/__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.

目前这是一种解决方法。

使用 pyvenv 创建一个 virtualenv

# install pyvenv on Ubuntu
sudo apt-get install python3-venv

为了尽量减少对正常工作流程的干扰,请传递与 virtualenvwrapper 使用的目标目录相同的目标目录,就像这样,

pyvenv example ~/.virtualenvs/example

这会自动与 workoncdproject 命令一起使用。 virtualenvwrapper

提供的其他东西我用的不多

希望对您有所帮助。

我遇到了同样的问题,但是在我将 virtualenv 降级到 12.0.2 之后,这个问题就消失了。

您可以升级到最新版本的 virtualenv,使用:

sudo pip install --upgrade https://github.com/pypa/virtualenv/archive/master.zip
virtualenv --version
# Returns 15.2.0.dev0 when I ran it

然后以下命令起作用:

mkvirtualenv scriptcutter --python=/usr/bin/python3

显然,开发分支已被删除,因此 URL 和 "develop" 将不再有效。我的回答基于@pjotr_dolphin 的评论,URL 已更新。