在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 。 它显示了不同平台的步骤,但基本步骤是
- 安装python3.x(如果不存在)为您的平台
- 为您的平台安装python3.x-devel
- 在python 3.x中创build虚拟环境(例如$ python3.6 -m venv virenv_test_p3 /)
- 激活python 3.x的testenvironment(例如source virenv_test_p3 / bin / activate)
- 安装你想在你的新的python 3虚拟环境中使用的软件包,并支持(例如pip install Django == 1.11.2)
我得到了同样的错误,因为它与miniconda3安装冲突,所以当你键入“哪个virtualenv”,如果你已经安装了miniconda,它指向安装,你可以删除它(如果你像我一样,并没有移动到它呢)或更改您的环境variables指向您想要的安装。
我有相同的ERROR
消息。 tbrisker的解决scheme在我的情况下不起作用。 相反,这解决了这个问题:
$ python3 -m venv .env