使用virtualenv,我使用默认版本的Python(2.7)运行我的项目。在一个项目中,我需要使用Python 3.4。

我使用brew install python3在Mac上安装它。现在,如何创建使用新版本的virtualenv?

例如sudo virtualenv envPython3

如果我尝试:

virtualenv -p python3 test

我得到:

Running virtualenv with interpreter /usr/local/bin/python3
Using base prefix '/usr/local/Cellar/python3/3.4.0_1/Frameworks/Python.framework/Versions/3.4'
New python executable in test/bin/python3.4
Also creating executable in test/bin/python
Failed to import the site module
Traceback (most recent call last):
  File "/Users/user/Documents/workspace/test/test/bin/../lib/python3.4/site.py", line 67, in <module>
    import os
  File "/Users/user/Documents/workspace/test/test/bin/../lib/python3.4/os.py", line 634, in <module>
    from _collections_abc import MutableMapping
ImportError: No module named '_collections_abc'
ERROR: The executable test/bin/python3.4 is not functioning
ERROR: It thinks sys.prefix is '/Users/user/Documents/workspace/test' (should be '/Users/user/Documents/workspace/test/test')
ERROR: virtualenv is not compatible with this system or executable

当前回答

对于使用pipenv并希望安装特定版本的用户:

pipenv install --python 3.6

其他回答

Python 3内置了对虚拟环境的支持—venv。用它来代替可能更好。参考文件:

通过执行pyvenv来创建虚拟环境脚本:pyvenv/path/to/new/virtual/environment

Python 3.6及更新版本更新:

正如pawciobiel正确评论的那样,pyvenv从Python 3.6开始就被弃用,新的方法是:

python3 -m venv /path/to/new/virtual/environment

对于使用pipenv并希望安装特定版本的用户:

pipenv install --python 3.6

这对我有用

virtualenv --no-site-packages --distribute -p /usr/bin/python3 ~/.virtualenvs/py3

我收到了同样的错误,因为它与miniconda3安装冲突,所以当您键入“which virtualenv”时,如果您已经安装了miniconda,并且它指向该安装,则可以删除它(如果您喜欢我,并且还没有移动到它)或更改环境变量以指向您想要的安装。

简单运行

virtualenv -p python3 envname

OP编辑后更新:

正如这里所描述的,OP版本的virtualenv中存在一个bug。通过运行以下命令解决了问题:

pip install --upgrade virtualenv