在虚拟环境中使用Python 3

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

我使用brew install python3在我的Mac上安装它。现在,我如何创建一个使用新版本的虚拟环境?

例如sudo虚拟envPython3

如果我尝试:

virtualenv -p python3 test

我得到:

Running virtualenv with interpreter /usr/local/bin/python3Using base prefix '/usr/local/Cellar/python3/3.4.0_1/Frameworks/Python.framework/Versions/3.4'New python executable in test/bin/python3.4Also creating executable in test/bin/pythonFailed to import the site moduleTraceback (most recent call last):File "/Users/user/Documents/workspace/test/test/bin/../lib/python3.4/site.py", line 67, in <module>import osFile "/Users/user/Documents/workspace/test/test/bin/../lib/python3.4/os.py", line 634, in <module>from _collections_abc import MutableMappingImportError: No module named '_collections_abc'ERROR: The executable test/bin/python3.4 is not functioningERROR: 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
1063254 次浏览

只需运行

virtualenv -p python3 envname

OP编辑后更新:

这里所述,OP版本的虚拟环境中存在bug。通过运行以下命令修复了问题:

pip install --upgrade virtualenv

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

除了其他答案之外,我建议检查您正在执行的虚拟环境实例:

which virtualenv

如果这出现在 /usr/local/bin中,那么有可能——甚至很可能——您安装了虚拟环境(可能使用easy_tools或pip的实例)而没有使用系统的包管理器(OP的情况是brew)。

几年前,当我更无知的时候,我安装了虚拟环境,它屏蔽了我系统的包提供的虚拟环境。

删除这个旧的,破碎的虚拟环境后,我的问题消失了。

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

brew install pyenv

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

pyenv install 3.5.0

并简单地创建带有所需解释器版本路径的虚拟环境:

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

就是这样,检查版本:

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

还有pyenvpyenv虚拟环境的插件,但它对我不起作用。

这招对我管用

virtualenv --no-site-packages --distribute -p /usr/bin/python3 ~/.virtualenvs/py3
virtualenv --python=/usr/bin/python3 <name of env>

为我工作。

如果你安装python3(brew install python3)和虚拟玉米煎饼,你可以做mkvirtualenv -p $(which python3) env_name

当然,我知道虚拟卷饼只是一个包装器,但多年来它对我很有帮助,减少了一些学习曲线。

安装先决条件。

sudo apt-get install python3 python3-pip virtualenvwrapper

创建一个基于Python3的虚拟环境。可选地启用--system-site-packages标志。

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

设置到虚拟环境中。

workon <venv-name>

使用pip包管理器安装其他需求。

pip install -r requirements.txtpip install <package_name>

当同时处理多个python项目时,通常建议全局安装pdbpp等常见包,然后在虚拟环境中重用它们。

使用此技术可以节省大量用于获取和安装软件包的时间,此外还可以消耗最少的磁盘空间和网络带宽。

sudo -H pip3 -v install pdbppmkvirtualenv -p $(which python3) --system-site-packages <venv-name>

Django特定说明

如果有很多系统范围的python包,那么建议不要使用--system-site-packages标志,特别是在开发过程中,因为我注意到它会大大减慢Django的启动速度。我假设Django环境初始化是手动扫描并附加系统路径中的所有站点包,这可能是原因。甚至python manage.py shell也变得很慢。

说到实验哪个选项更有效。对于Django项目,跳过--system-site-packages标志可能是安全的。

我尝试了上面所有的东西,它仍然不起作用。所以作为一个蛮力,我只是重新安装了水蟒,重新安装了虚拟环境……它起作用了。

Amans-MacBook-Pro:~ amanmadan$ pip install virtualenvYou 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 virtualenvDownloading virtualenv-15.0.3-py2.py3-none-any.whl (3.5MB)100% |████████████████████████████████| 3.5MB 114kB/sInstalling collected packages: virtualenvSuccessfully installed virtualenv-15.0.3Amans-MacBook-Pro:python amanmadan$ virtualenv my_envNew python executable in /Users/amanmadan/Documents/HadoopStuff/python/my_env/bin/pythonInstalling setuptools, pip, wheel...done.Amans-MacBook-Pro:python amanmadan$

在Mac上,我必须做以下事情才能让它工作。

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

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

引用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/空格目录/某物”)

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

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

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

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

下面将讨论的场景不是最初问的,只是添加这个以防有人使用带有python扩展的vscode

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

这里是一个简单的方法来解决这个问题。

cd Workspace\Scripts.\Activate.ps1code .

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

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

对于那些在使用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

我想在Centos 7上保留python 2.7.5作为默认版本,但在python 2. x中与其他虚拟环境一起运行的虚拟环境中使用python 3.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它显示了不同平台的步骤,但基本步骤是

  1. 为您的平台安装python3. x(如果不存在)
  2. 为您的平台安装python3. x-devel
  3. 在python 3. x中创建虚拟环境(例如$python3.6-m venvvirenv_test_p3/)
  4. 激活python 3. x的测试环境(例如源virenv_test_p3/bin/激活)
  5. 安装要在新的python 3虚拟环境中使用并且受支持的包(例如pip install Django==1.11.2)

我得到了同样的错误,因为它是一个与minconda3安装冲突,所以当你键入“哪个虚拟环境”,如果你已经安装了minicon da,它指向该安装,你可以删除它(如果你喜欢我,还没有移动到它)或更改你的环境变量指向你想要的安装。

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

$ python3 -m venv .env

您可以在创建环境时指定特定的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)

在python3.6我试过python3 -m venv myenv,根据留档,但它花了这么长时间。所以非常简单和快速的命令是python -m venv yourenv在python3.6上运行。

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

pipenv install --python 3.6

这就是你所需要的,以便在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

有时cmdvirtualenv失败,如果是这样,请使用:

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

现在激活虚拟环境:

source <env_name>/bin/activate

或:

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

现在快跑

which python

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

要退出虚拟环境,请运行:

deactivate

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

where python

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

C:\Users\carandangc\Anaconda3\python.exeC:\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

下面的简单命令可以创建3.5版的虚拟环境

apt-get install python3-venv
python3.5 -m venv <your env name>

如果您想要虚拟环境版本为3.6

python3.6 -m venv <your env name>