使用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现在提供了自己的虚拟环境实现,名为“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就可以在环境中启动,并可以看到所有本地包。

其他回答

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

我想在Centos 7上保留python2.7.5作为默认版本,但在python2.x中的其他虚拟环境中运行python2.6.1

我发现以下链接是最新python版本(python 3.6.1)的最佳解决方案https://www.digitalocean.com/community/tutorial_series/how-to-install-and-set-up-a-local-programming-environment-for-python-3.它显示了不同平台的步骤,但基本步骤如下

为您的平台安装python3.x(如果不存在)为您的平台安装python3.x-devel在python3.x中创建虚拟环境(例如$python3.6-m venv virenv_test_p3/)激活python 3.x的测试环境(例如source virenv_test_p3/bin/activate)安装您希望在新的python3虚拟环境中使用并受支持的软件包(例如pipinstallDjango==1.11.2)

在Windows命令行中,以下操作对我有效。首先找出python可执行文件的位置:

where python

这将输出到系统上不同python.exe的路径。这是我的:

C:\Users\carandangc\Anaconda3\python.exe
C:\Python27\python.exe

所以对于Python3,它位于我的第一个路径中,所以我cd到应用程序的根文件夹,在那里我想创建一个虚拟环境文件夹。然后我运行以下命令,其中包含Python3可执行文件的路径,将虚拟环境命名为“venv”:

virtualenv --python=/Users/carandangc/Anaconda3/python.exe venv

接下来,激活虚拟环境:

call venv\Scripts\activate.bat

最后,安装此虚拟环境的依赖项:

pip install -r requirements.txt

如果您知道虚拟环境中应用程序所需的库/模块,则可以手动填充此requirements.txt。如果应用程序在另一个环境中运行,则可以通过运行以下命令(cd到其工作环境中的应用程序文件夹)自动生成依赖项:

pip freeze > requirements.txt

然后,一旦您有了“冻结”的requirements.txt,您就可以在另一台机器上或干净的环境中安装这些要求(在cd到应用程序文件夹之后):

pip install -r requirements.txt

要在虚拟环境中查看python版本,请运行:

python --version

那么瞧。。。在虚拟环境中运行Python3。我的输出:

Python 3.7.2

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

pipenv install --python 3.6
virtualenv --python=/usr/bin/python3 <name of env>

为我工作。