使用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

当前回答

这就是在python/python3中运行虚拟环境所需的全部内容

首先,如果未安装virtualenv,请运行

pip3 install virtualenv 

立即运行:

virtualenv -p python3 <env name> # you can specify full path instead <env_name> to install the files in a different location other than the current location

有时cmd virtualenv失败,如果失败,请使用以下命令:

python3 -m virtualenv <env_name>  # you can specify full path instead <env_name> to install the files in a different location other than the current location

现在激活虚拟env:

source <env_name>/bin/activate

Or:

source `pwd`/<env_name>/bin/activate

现在运行

which python

您应该看到目录的完整路径和<env_name>/bin/python后缀

要退出virtualenv,请运行:

deactivate 

要解决Python问题,请转到此处

其他回答

我尝试过pyenv,它非常方便地切换python版本(全局版本、本地文件夹版本或虚拟版本):

brew install pyenv

然后安装所需的Python版本:

pyenv install 3.5.0

并简单地创建virtualenv,其中包含所需解释器版本的路径:

virtualenv -p /Users/johnny/.pyenv/versions/3.5.0/bin/python3.5 myenv

就是这样,检查版本:

. ./myenv/bin/activate && python -V

还有pyenv pyenv virtualenv的插件,但不知怎么的,它不适合我。

如果您将python3(brew install python2)与virtualenv burrito一起安装,那么可以执行mkvirtualenv-p$(哪个python1)env_name

当然,我知道virtualenv卷饼只是一种包装,但多年来它对我很有用,减少了一些学习曲线。

virtualenv--python=/usr/local/bin/python3<VIRTUAL ENV NAME>这将添加python3虚拟环境的路径。

您可以在创建环境时指定Python的特定版本。virtualenv.py中提到过

virtualenv --python=python3.5 envname

在某些情况下,这必须是可执行文件的完整路径:

virtualenv --python=/Users/username/.pyenv/versions/3.6.0/bin/python3.6 envname

-p的工作原理

parser.add_option(
    '-p', '--python',
    dest='python',
    metavar='PYTHON_EXE',
    help='The Python interpreter to use, e.g., --python=python3.5 will use the python3.5 '
    'interpreter to create the new environment.  The default is the interpreter that '
    'virtualenv was installed with (%s)' % sys.executable)

Python现在提供了自己的虚拟环境实现,名为“venv”。我建议使用它,而不是virtualenv。

引用venv-docs,

自版本3.6以来已弃用:pyvenv是推荐的工具为Python 3.3和3.4创建虚拟环境Python 3.6中已弃用。在版本3.5中进行了更改:现在建议使用venv创建虚拟环境。

对于windows,要在某些项目上启动venv,请打开cmd:

python -m venv "c:\path\to\myenv"

(如果目录路径包含空格,建议在其周围使用双引号。例如:“C:\My Dox/Spaced directory/Something”)

一旦设置了venv,您将在项目目录中看到一些新文件夹。其中之一是“脚本”。

要激活或调用venv,您需要:

C:\> <venv>\Scripts\activate.bat

您可以通过在shell中键入“deactivate”来停用虚拟环境。这样,您就可以安装特定于项目的库了,这些库将位于文件夹“Lib”下。

========================================编辑1===================================下面将讨论的场景并不是最初要求的,只是在有人使用带有python扩展的vscode时添加了这个

如果您使用带有python扩展的vs代码,那么您可能会遇到指向全局安装的pyint的问题。在这种情况下,pyint将无法看到安装在虚拟环境中的模块,因此在导入时将显示错误。

这里有一个简单的方法来克服这个问题。

cd Workspace\Scripts
.\Activate.ps1
code .

我们基本上是先激活环境,然后调用vs代码,这样pyint就可以在环境中启动,并可以看到所有本地包。