在virtualenv中使用Python 3

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

我用brew install python3在我的Mac上安装它。 现在,我如何创build一个使用新版本的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 

简单地运行

 virtualenv -p python3 envname 

OP编辑后更新:

如下所述,在OP的virtualenv版本中存在一个错误。 问题是通过运行修复的:

 pip install --upgrade virtualenv 

Python 3有一个内置的虚拟环境支持 – venv 。 相反,使用它可能会更好。 参考文档:

通过执行pyvenv脚本完成虚拟环境的创build:

pyvenv /path/to/new/virtual/environment

Python 3.6及更新版本的更新:

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

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

我试过pyenv ,它非常方便切换python版本(全球,本地文件夹或在virtualenv):

 brew install pyenv 

然后安装你想要的Python版本:

 pyenv install 3.5.0 

只需创build具有所需解释器版本的path的virtualenv:

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

就是这样,检查版本:

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

也有pyenv pyenv-virtualenv的插件,但它不能为我工作。

安装先决条件。

 sudo apt-get install python3 python3-pip virtualenvwrapper 

创build一个基于Python3的虚拟环境。 可以select启用--system-site-packages标志。

 mkvirtualenv -p /usr/bin/python3 <venv-name> 

设置到虚拟环境中。

 workon <venv-name> 

使用pip软件包pipe理器安装其他需求。

 pip install -r requirements.txt pip install <package_name> 

当同时处理多个python项目时,通常build议在全局安装像Django这样的公共包,然后在virtualenvs中重用它们。

除了占用最less的磁盘空间和networking带宽之外,使用这种技术可以节省大量的时间来获取软件包并进行安装。

 sudo -H pip3 -v install Django mkvirtualenv -p $(which python3) --system-site-packages <venv-name> 
 virtualenv --python=/usr/bin/python3 <name of env> 

为我工作。

除了其他的答案,我build议检查你正在执行的virtualenv的实例:

 which virtualenv 

如果这在/ usr / local / bin中出现了某种情况,则可能(甚至有可能)您安装了virtualenv(可能使用easy_tools或pip的实例),而无需使用系统的包pipe理器(在OP中调用brew)。 这是我的问题。

几年前 – 当时我更加无知 – 我已经安装了virtualenv,它掩盖了我系统的软件包提供的virtualenv。

删除这个破旧的虚拟光碟后,我的问题就消失了。

Python现在有自己的虚拟环境的实现,名称为“venv”。 我会build议使用,而不是virtualenv。

从venv – docs引用,

从3.6版开始弃用:pyvenv是为Python 3.3和3.4创build虚拟环境的推荐工具,在Python 3.6中已弃用。

版本3.5中已更改: 现在build议使用venv来创build虚拟环境。

对于windows,要启动某个项目的venv,打开cmd:

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

(如果目录path中包含空格的话,build议使用双引号。例如:“C:/ My Dox / Spaced Directory / Something”)

一旦venvbuild立,你会看到你的项目目录中的一些新的文件夹。 其中之一就是“脚本”。

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

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

您可以通过在shell中键入“停用”来禁用虚拟环境。 有了这个,你现在已经准备好安装你的项目特定的库,它将驻留在“Lib”文件夹下。

================================编辑1 ================ ====================下面将要讨论的场景并不是最初要求的,只是为了防止某人使用带有python扩展名的vscode

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

这是通过这个简单的方法。

 cd Workspace\Scripts .\Activate.ps1 code . 

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

如果你安装了python3( brew install python3 )和virtualenv mkvirtualenv -p $(which python3) env_name ,你可以这样做mkvirtualenv -p $(which python3) env_name

当然,我知道卷饼只是一个包装,但是多年来它一直很好,减less了一些学习曲线。

在Mac上,我不得不做下面的工作。

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

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

它为我工作

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

我尝试了所有上述的东西,但仍然无法正常工作。 所以作为一个蛮力,我只是重新安装了anaconda,重新安装了virtualenv …,它的工作。

 Amans-MacBook-Pro:~ amanmadan$ pip install virtualenv You are using pip version 6.1.1, however version 8.1.2 is available. You should consider upgrading via the 'pip install --upgrade pip' command. Collecting virtualenv Downloading virtualenv-15.0.3-py2.py3-none-any.whl (3.5MB) 100% |████████████████████████████████| 3.5MB 114kB/s Installing collected packages: virtualenv Successfully installed virtualenv-15.0.3 Amans-MacBook-Pro:python amanmadan$ virtualenv my_env New python executable in /Users/amanmadan/Documents/HadoopStuff/python/my_env/bin/python Installing setuptools, pip, wheel...done. Amans-MacBook-Pro:python amanmadan$ 

对于那些在使用Anaconda3(Python 3)时遇到麻烦的人。

你可以使用

 conda create -n name_of_your_virtualenv python=python_version 

要激活环境(Linux,MacOS)

 source activate name_of_your_virtualenv 

对于Windows

 activate name_of_your_virtualenv 

我想保留python 2.7.5作为默认版本在Centos 7上,但是在虚拟环境中运行python 3.6.1,与python 2.x中的其他虚拟环境一起运行

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

  1. 安装python3.x(如果不存在)为您的平台
  2. 为您的平台安装python3.x-devel
  3. 在python 3.x中创build虚拟环境(例如$ python3.6 -m venv virenv_test_p3 /)
  4. 激活python 3.x的testenvironment(例如source virenv_test_p3 / bin / activate)
  5. 安装你想在你的新的python 3虚拟环境中使用的软件包,并支持(例如pip install Django == 1.11.2)

我得到了同样的错误,因为它与miniconda3安装冲突,所以当你键入“哪个virtualenv”,如果你已经安装了miniconda,它指向安装,你可以删除它(如果你像我一样,并没有移动到它呢)或更改您的环境variables指向您想要的安装。

我有相同的ERROR消息。 tbrisker的解决scheme在我的情况下不起作用。 相反,这解决了这个问题:

 $ python3 -m venv .env