我已经安装了Python 3.4.0并使用python -m venv myenv
创建了虚拟环境。如何在虚拟环境中更改Python版本?文档说:
每个虚拟环境都有自己的Python二进制文件(允许创建 具有各种Python版本的环境)并且可以拥有自己的 在其站点目录中独立安装的Python包。
更新
请注意,我从标准库询问 venv ,而不是关于virtualenv。 让我提供一些链接。
我没有在venv中看到类似--python
标志的内容。
venv和virtualenv绝对相似吗? venv是如此不受欢迎,没有人使用它,以至于virtualenv仍然是标准吗?
答案 0 :(得分:10)
现在,我建议使用Pipenv创建虚拟环境并在Python中处理项目依赖项。
Pipenv - Python.org官方推荐的Python打包工具,免费(自由)。
Pipenv是一个旨在将最好的包装世界(捆绑商,作曲家,npm,货物,纱线等)带到Python世界的工具。在我们的世界里,Windows是一流的公民。
要创建虚拟环境,请进入项目目录并运行:
pipenv --python 3.6
将3.6替换为您需要的版本。 (您选择的版本必须安装在您的系统上。以下是install multiple Python versions next to each other)
的方式在您的环境中安装软件包:
pipenv install my_package
或者如果依赖项仅用于开发目的(测试等):
pipenv install my_packge --dev
在您的环境中运行。:
pipenv run python my_file.py
在Linux上,您可以轻松地install multiple versions of Python在主要版本旁边,您可以使用标准库中的venv包从每个版本> = 3.3创建虚拟环境。
创建venv
$ python3.3 -m venv myvenv_foo # Create a python3.4 venv named 'myvenv_foo'
$ python3.4 -m venv myvenv_bar # Create a python3.4 venv named 'myvenv_bar'
$ python3.5 -m venv myvenv_baz # Create a python3.5 venv named 'myvenv_baz'
# etc...
激活venv
source myvenv_foo/bin/activate # Activates venv 'myvenv_foo'
停用venv
deactivate
注意:python
vs pythonX.X
如果您安装了多个Python版本,则可以通过向命令添加版本号来访问每个版本,例如python3.5
,python3.6
等。但请记住,当您激活一个venv时,只要它被激活,就会将它绑定到clean / versionless python
命令。 E.g:
$ python -V # Use the *clean* 'python' command to show the main version of the OS.
Python 2.7.6
$ python3.5 -m venv myvenv_foo # Create a new venv from 'python3.5'.
$ source myvenv_foo/bin/activate # Activate venv.
$ python -V # The *clean* 'python' command is now bound to your activated venv.
Python 3.5.2
$ deactivate # Deactivate venv.
$ python -V # Now the *clean* command is bound back to the main version.
Python 2.7.6
答案 1 :(得分:4)
这是一个非常好的问题,因为有几个具有相似名称和用途的python模块/库(内置和第三方)。完全可以同情OP的困惑。
实际上有两种不同的行为/责任:
1)。能够在(系统)Python解释器的不同版本之间切换,例如。 2.7.10 或 3.5.0 等
2)。创建虚拟环境的能力(它只是一个包含特定版本python的所有管道(二进制文件和库)的本地文件夹。可以把它想象成一个特定python版本的冻结本地实例。本质上它是一个独立的,轻量级的python安装。
上面提到的pyvenv
模块提供了 2)。它将允许您创建一个虚拟环境,该环境设置为用于创建它的Python版本。
$ python --version
Python 3.5.0
$ pyvenv myenv # myenv is now a local environment using Python 3.5.0
有关pyvenv的进一步信息,请参阅library/venv
像pyenv
这样的模块(名字很混乱,对吧?注意,pyenv,而不是py v env)另一方面,控制你的系统基本上是什么样的python运行。这提供了上面的 1)。因此,当没有通过pyvenv等运行特定的虚拟环境时,这是正在使用的“全局”版本。事实上,它比那更复杂(因为你也可以设置本地配置等),但基本上这对于这个讨论来说已经足够了。
有关pyenv的更多信息,请参阅github.com/yyuu/pyenv
假设我想运行Python版本2.7.10和3.5.0,那么我会使用pyenv来安装这两个版本(这里,我选择了全局),并且可以使用以下命令查看:
$ pyenv versions
system
* 2.7.10 (set by ~/.pyenv/version)
* 3.5.0 (set by ~/.pyenv/version)
$ python --version
Python 3.5.0
$ which python
~/.pyenv/shims/python
$ python2.7 --version
Python 2.7.10
是的,上面提到的每个模块/库都有几个主要的替代品。加热讨论Reddit / SOF等详细说明和争论哪个是最好的。他们中的许多人都做了非常相似的事情......
答案 2 :(得分:1)
这根本不可能。要创建特定Python版本的python venv,我们需要这个特定的版本。
显然,Python解释器不包含所有以前的版本。 Python 3.4.1在其中的任何地方都不包含Python 2.7.8可执行文件。
答案 3 :(得分:1)
正如另一个答案所说,您需要已经存在的特定版本才能为其创建虚拟环境。因此,如果您的系统中某个地方已经有了它,那么您就可以做到。比如OSX自带Python2.7,所以要创建2.7的虚拟环境,避免搞乱系统一,做:
$ virtualenv -p /usr/local/opt/python@2/bin/python2.7 venv
基本上:
$ virtualenv -p <path/to/existing/python> <path/to/new/virtualenv/>
答案 4 :(得分:0)
自 2021 年起,您不能将多个 Python 版本与标准库 venv
一起使用。它将仅使用已安装的 Python。
对于替代方案,您需要其他工具。您可以使用:
conda env export --from-history
)。