如何指定用于创建虚拟环境的Python版本?

71

当我使用virtualenv创建我的Python虚拟环境时,它们使用python3.6

~ $ virtualenv my_env

但是我需要使用python3.5,因为3.6目前不受Opencv3支持

我已尝试在创建虚拟环境时使用--python=<py_version> 标志,但这并不起作用。

如何在Mac和/或Linux上使用virtualenv指定要安装的Python(3.x)版本?


你在电脑上安装了Python 3.5吗?你在传递--python标志方面是正确的,因此你的环境或调用中还有其他问题。你能提供错误信息吗? - Cody Piersall
昨天我尝试在已激活的虚拟环境中运行conda install python=3.5,以为这会改变我的环境内Python分发版本,但实际上它改变了本地版本。我改回到3.6,但现在遇到了这个问题,但那里的答案对我不起作用。哦天啊,我做了什么。 - Danoram
@CodyPiersall 看起来安装 miniconda 改变了路径变量为 /Users/.../miniconda3/bin:,这与 virtualenv 使用的 Python 版本不兼容。从路径中删除 /Users/.../miniconda3/bin 可以解决问题,但是我就不能使用 conda 了... 我知道这现在是一个单独的问题,但有什么办法可以将其添加回路径而不会弄乱 virtualenv 吗? - Danoram
2
我只是想给那些使用Windows(并使用Powershell)的人一些提示。在这种情况下,请确保明确写出.exe,也就是我的意思是:virtualenv -p C:\PythonVersionFolder\Python.exe EnvName。否则,您可能会遇到PermissionError: [WinError 5] denied Access。 - Carmine Tambascia
1
可能是[在virtualenv中使用不同的Python版本]的重复问题(https://dev59.com/bXI_5IYBdhLWcg3wFu7L)。 - Trevor Boyd Smith
8个回答

65

假设您已经安装了python3或任意您希望使用的Python版本(2.6、2.7、3.5、3.6),那么在创建虚拟环境时直接传入Python可执行文件的路径即可。以下是一些有效的示例:

$ virtualenv new_p2_env # Creates a new default python environment (usually python 2)

$ virtualenv -p python3 new_p3_env # Creates a new default python3 (python3 must be a valid command i.e found in the PATH) 

最后

# Directly point to any version of python binary, this can be even another virtualenv's bin/python. 
$ virtualenv -p /path/to/any/bin/python new_env 

10
这将创建一个带有python3.6的虚拟环境。我想要python3.5 - Danoram
3
你可以轻松找到卸载python3.6并安装python3.5的方法。如果你确实需要在同一台机器上保留多个版本的Python,可以使用像pyenvpythonbrew这样的工具。 - nehem
2
嘿@itsneo,感谢您的建议!进一步阅读您的评论,我是否正确地理解,当您创建虚拟环境时,virtualenv使用在$PATH中指定的本地Python版本(2.x/3.x),并且没有通过virtualenv命令本身更改特定Python版本的方法? - Danoram
3
您仍然可以直接创建虚拟环境,并指定Python可执行文件的路径,例如virtualenv -p /usr/local/bin/python35 env_name - nehem
补充@nehem的评论,对我来说完美无缺:要查找Python路径,请参见此处 - J0ANMM
你也可以使用你特定的Python标识符名称,例如 virtualenv -p python3.9 venv - Ari

15

另外,我认为您可以使用Python的具体版本来创建虚拟环境。这样,您就可以确定它是正确的版本:

$ python3.5 -m venv test35
$ ./test35/bin/python
Python 3.5.2 (v3.5.2:4def2a2901a5, Jun 26 2016, 10:47:25)
[GCC 4.2.1 (Apple Inc. build ) (dot 3)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>>

参考 https://docs.python.org/3.5/library/venv.html


1
不错。是的,最终我使用 conda 创建了虚拟环境。现在一切都正常工作,这让我感到非常宽慰。 - Danoram
如果你所有的Python版本都被简单地称为“python”,如果你知道完整路径,你仍然可以分别引用每个版本。因此,如果你在特定路径中安装了Python 3.4.5,那么/opt/srv/whatever/path/to/python345/bin/python -m venv test345将为其创建一个虚拟环境。 - tripleee

8
自从版本3.3开始,Python包含了一个名为venv的包。然而,该包并没有像传统的virtualenv包提供相同的功能。 venv只允许为其安装的Python版本创建虚拟环境。 通过提供二进制文件路径,virtualenv允许为不同的Python版本创建虚拟环境。

为不同版本的Python创建虚拟环境:

假设有Python 2.7和Python 3.6安装在/path/to/中,并且想要分别创建名为env-py36的Python 3.6虚拟环境和名为env-py27的Python 2.7虚拟环境。
# create a virtual env with python3's venv :
/path/to/python36/bin/python3 -m venv /my/python-venvs/env-py36
. /my/python-venvs/env-py36/bin/activate
# we're now running python 3's "env-py36" virtual env, we want to install the "virtualenv" package
pip install virtualenv
deactivate
# now use virtualenv to create a virtual environment for python 2.7
/my/python-venvs/env-py36/bin/virtualenv --python=/path/to/python27/bin/python /my/python-venvs/env-py27

使用 Python 3.3+ venv

Python 3.3+:

/path/to/python3/bin/python3 -m venv ENV_DIR

Python 3.3到3.5(在3.6+中已被弃用):

/path/to/python3/bin/pyvenv ENV_DIR

来源:

这些是关于创建虚拟环境的资料,可以帮助您在IT技术方面更加专业。

7

我同时在Ubuntu和MacOS上工作

Ubuntu: virtualenv -p python3.6 environment_file

Mac OS: virtualenv -p python3.6 environment_file

我认为它们是相同的


4

我遇到了一个问题(并来到这里),但是这个问题出现在Windows系统下。Python 3.9已安装在一台计算机上,但它在开发时仍然存在与3.7不兼容的问题。我想使用虚拟环境将版本降级到3.7以帮助调试问题。使用Python Launcher for Windows

py -3.7 -m venv my_env

在Python项目文件夹中为我解决了这个问题。


1
希望我能多次点赞,因为我花了一些时间才找到这个很棒的解决方案。 - ablanch5

0
在Linux中:
假设您的系统上已安装了Python3.8(或更高版本),但是为了完成特定任务,您需要Python 3.7(或更低版本)。 最好的方法是创建一个虚拟环境,使用Python 3.7(或任何3.x版本),按照您所需的版本更改以下命令。下面是使用Python3.7实现虚拟环境的步骤: 具体步骤如下:
  1. 安装Python 3.7及其虚拟环境包。

    sudo apt-get install python3.7-dev python3.7-venv

  2. 通过以下命令找出Python 3.7的位置:

    which python3.7(应该类似于/usr/bin/python3.7)

  3. 在主目录中创建虚拟环境。

    cd

    mkdir virtual_env

    /usr/bin/python3.7 -m venv ~/virtual_env/venv_with_python3.7

    source ~/virtual_env/venv_with_python3.7/bin/activate

  4. python --version(现在应该是Python 3.7)

  5. 完成。Python 3.7可以在此虚拟环境中使用。键入which python,您将看到已在虚拟环境中创建了Python 3.7,而不是全局系统中。

    需要停用时运行deactivate


0
简单明了的解决方案: 只需观看此视频(https://www.youtube.com/watch?v=hC9FBQnOv6o),按照特定Python版本的Python设置下载说明,然后使用virtualenv <folder_name> -p /python.exe命令即可。 该命令也在视频中展示。

0

使用Anaconda,我们可以通过运行以下命令创建一个名为“py35_env”的虚拟环境,并使用Python 3.5版本:

conda create --name py35_env python=3.5

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接