如何为指定版本的 Python 创建虚拟环境?
注意:对于 Python 3.3+,请参阅下方 The Aelfinn 的answer。
在创建 virtualenv 实例时使用 --python
(或简称 -p
)选项来指定要使用的 Python 可执行文件,例如:
virtualenv --python="/usr/bin/python2.6" "/path/to/new/virtualenv/"
从 Python 3 开始,documentation 建议使用以下方法创建虚拟环境:
python3 -m venv "my_env_name"
请注意,venv
不允许使用其他版本的 Python 创建虚拟环境。为此,请安装并使用 virtualenv
软件包。
过时的信息
pyvenv
脚本可用于创建虚拟环境:
pyvenv "/path/to/new/virtual/environment"
自 Python 3.6 起已弃用。
python3 -m venv <envname>
运行,以防止所有内容都需要存根脚本。
pyvenv
脚本是 Python 3.6+ 中的 deprecated,尽管底层 venv
模块本身不是。所以使用 python 3 -m venv <myenvname>
正如@PaulEveritt 所说。
pyvenv
或 python3 -m venv ...
不要安装 python-config
脚本。这意味着即使在激活您的 Python3 环境之后,系统范围的 python-config
也会被调用,结果令人困惑。请参阅 2011 年的此错误报告 github.com/pypa/virtualenv/issues/169 和我的问题 stackoverflow.com/questions/42020937/…
venv
的方法是在设置时使用该版本。例如:python3.5 -m venv venv
venv
使用不同的 python 版本。您只需确保使用适当的 python 版本来运行 venv
,而不是像 virtualenv
那样提供参数。以 py
为例,python 启动器:py -3.3 -m venv my_venv
将使用 python 3.3 创建一个虚拟环境。
这些是您在共享主机环境中并且需要安装 &从源代码编译 Python,然后从您的 Python 版本创建 venv
。对于 Python 2.7.9。你会按照这些思路做一些事情:
mkdir ~/src
wget http://www.python.org/ftp/python/2.7.9/Python-2.7.9.tgz
tar -zxvf Python-2.7.9.tgz
cd Python-2.7.9
mkdir ~/.localpython
./configure --prefix=$HOME/.localpython
make
make install
虚拟环境
cd ~/src
wget https://pypi.python.org/packages/5c/79/5dae7494b9f5ed061cff9a8ab8d6e1f02db352f3facf907d9eb614fb80e9/virtualenv-15.0.2.tar.gz#md5=0ed59863994daf1292827ffdbba80a63
tar -zxvf virtualenv-15.0.2.tar.gz
cd virtualenv-15.0.2/
~/.localpython/bin/python setup.py install
virtualenv ve -p $HOME/.localpython/bin/python2.7
source ve/bin/activate
自然,这可以适用于您想要复制您工作和部署的确切环境的任何情况。
~/.localpython/bin/virtualenv
而不仅仅是 virtualenv
才能完成安装而不会出错。此外,使用 source ve/bin/activate
而不是 source activate
。
有一个更简单的方法,
virtualenv venv --python=python2.7
感谢评论,这仅在您在系统级别安装了 python2.7 时才有效(例如 /usr/bin/python2.7)。
否则,如果您使用的是自制软件,则可以使用该路径为您提供所需的内容。
virtualenv venv --python=/usr/local/bin/python
你可以找到你的python安装路径
which python
这也适用于 python 3。
which python3
>> /usr/local/bin/python3
virtualenv venv --python=/usr/local/bin/python3
最终浓缩为:
virtualenv venv -p `which python`
virtualenv venv -p `which python3`
virtualenv venv --python=python3.6
做到这一点
virtualenv env --python=python2
virtualenv venv --python=<insert_your_python_version_here>
其中 <insert_your_python_version_here>
在我的情况下 C:\Python\Python368\python.exe
virtualenv --python=/usr/bin/python2.6 <path/to/myvirtualenv>
-p
。
python3.6
但不想触摸安装在您计算机上的 python3.5
?
在 Windows 下对我来说这有效:
virtualenv --python=c:\Python25\python.exe envname
没有 python.exe
我得到 WindowsError: [Error 5] Access is denied
我安装了 Python2.7.1 和 virtualenv 1.6.1,我想要 python 2.5.2。
Mac OSX 10.6.8(雪豹):
1) 当您执行 pip install virtualenv
时,pip 命令与您的一个 python 版本相关联,并且 virtualenv
被安装到该版本的 python 中。你可以做
$ which pip
看看那是什么版本的python。如果你看到类似的东西:
$ which pip
/usr/local/bin/pip
然后做:
$ ls -al /usr/local/bin/pip
lrwxrwxr-x 1 root admin 65 Apr 10 2015 /usr/local/bin/pip ->
../../../Library/Frameworks/Python.framework/Versions/2.7/bin/pip
您可以在输出中看到 python 版本。
默认情况下,这将是用于您创建的任何新环境的 python 版本。但是,您可以使用 -p flag
指定计算机上安装的任何 python 版本以在新环境中使用:
$ virtualenv -p python3.2 my_env
Running virtualenv with interpreter /usr/local/bin/python3.2
New python executable in my_env/bin/python
Installing setuptools, pip...done.
virtualenv my_env 将在当前目录中创建一个文件夹,该文件夹将包含 Python 可执行文件,以及可用于安装其他包的 pip [command] 的副本。
http://docs.python-guide.org/en/latest/dev/virtualenvs/
virtualenv
只需将 python 从您计算机上的某个位置复制到新创建的 my_env/bin/ 目录中。
2)系统python在/usr/bin
中,而我安装的各种python版本默认安装到:
/usr/local/bin
3) 我安装的各种 python 的名称如 python2.7
或 python3.2
,我可以使用这些名称而不是完整路径。
========VIRTUALENVWRAPPER=========
1)我在让 virtualenvwrapper 工作时遇到了一些问题。这就是我最终放入 ~/.bash_profile
的内容:
export WORKON_HOME=$HOME/.virtualenvs
export PROJECT_HOME=$HOME/django_projects #Not very important -- mkproject command uses this
#Added the following based on:
#http://stackoverflow.com/questions/19665327/virtualenvwrapper-installation-snow-leopard-python
export VIRTUALENVWRAPPER_PYTHON=/usr/local/bin/python2.7
#source /usr/local/bin/virtualenvwrapper.sh
source /Library/Frameworks/Python.framework/Versions/2.7/bin/virtualenvwrapper.sh
2) -p option
与 virtualenvwrapper 的工作方式不同:我必须指定要在新环境中使用的 python 解释器的完整路径(当我不想使用默认的 python 版本时):
$ mkvirtualenv -p /usr/local/bin/python3.2 my_env
Running virtualenv with interpreter /usr/local/bin/python3
New python executable in my_env/bin/python
Installing setuptools, pip...done.
Usage: source deactivate
removes the 'bin' directory of the environment activated with 'source
activate' from PATH.
与 virtualenv 不同,virtualenvwrapper 将在 $WORKON_HOME 环境变量指定的位置创建环境。这将您的所有环境保存在一个地方。
which pip
没有告诉我 Python 的版本。它给了我这个-/usr/local/bin/pip
。
/usr/local/bin
并执行 $ ls -al pip
,您应该会看到如下内容:pip -> ../../../Library/Frameworks/Python.framework/Versions/2.7/bin/pip
mkproject
的命令。 mkproject -p /usr/bin/python3.6 myNewPython36Project
/usr/local/bin
并执行 ls -al pip
我得到这个 -rwxr-xr-x 1 root admin 266 23 Mar 09:40 pip
virtualenv -p
一起使用的 python 版本。
[2019 年 11 月] 我需要在基于 Python 3.8 的 Arch Linux 系统上安装 Python 3.7 环境 (env)。 Python 3.7 不再在系统上,所以我无法降级 Python 来安装我需要的包。
此外,我想在虚拟环境(venv)中使用该包/Python 3.7。我就是这样做的。
下载Python版本源文件:
我从以下位置下载了 Python 3.7.4 源文件
https://www.python.org/downloads/source/
至
/mnt/Vancouver/apps/python_versions/src/Python-3.7.4.tgz
然后我将该存档(源文件)提取到
/mnt/Vancouver/apps/python_versions/src/Python-3.7.4/
安装:
[注意:在我的系统环境中,不是 venv。]
cd /mnt/Vancouver/apps/python_versions/src/Python-3.7.4/
time ./configure ## 17 sec
time make ## 1 min 51 sec
time sudo make install ## 18 sec
time make clean ## 0.3 sec
检查已安装的 Python 版本:
$ which python
/usr/bin/python
$ python --version
Python 3.8.0
$ which python3.7
/usr/local/bin/python3.7
$ python ## Python 3.8 [system / env]
Python 3.8.0 (default, Oct 23 2019, 18:51:26)
[GCC 9.2.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>>
$ python3.7 ## newly-installed Python 3.7 package
Python 3.7.4 (default, Nov 20 2019, 11:36:53)
[GCC 9.2.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import sys
>>> print(sys.version)
3.7.4 (default, Nov 20 2019, 11:36:53)
[GCC 9.2.0]
>>>
$ python3.7 --version
Python 3.7.4
如何为特定的 Python 版本创建 venv:
https://docs.python.org/3/tutorial/venv.html 12.2。创建虚拟环境 用于创建和管理虚拟环境的模块称为 venv。 venv 通常会安装你可用的最新版本的 Python。如果您的系统上有多个 Python 版本,您可以通过运行 python3 或您想要的任何版本来选择特定的 Python 版本。要创建虚拟环境,请确定要放置它的目录,然后将 venv 模块作为具有目录路径的脚本运行: python3 -m venv tutorial-env 如果没有,这将创建 tutorial-env 目录存在,并在其中创建目录,其中包含 Python 解释器、标准库和各种支持文件的副本。 ...
创建 Python 3.7 venv [在 Python 3.8 操作 env / 系统上]:
python3.7 -m venv ~/venv/py3.7 ## create Python 3.7-based venv
source ~/venv/py3.7/bin/activate ## activate that venv
deactivate ## deactivate that venv (when done, there)
添加到 ~/.bashrc
:
alias p37='echo " [Python 3.7 venv (source ~/venv/py3.7/bin/activate)]" && source ~/venv/py3.7/bin/activate'
测试 Python 3.7 venv:
$ p37
[Python 3.7 venv (source ~/venv/py3.7/bin/activate)]
(py3.7)$ python --version
Python 3.7.4
(py3.7)$ python
Python 3.7.4 (default, Nov 20 2019, 11:36:53)
[GCC 9.2.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import sys
>>> print(sys.version)
3.7.4 (default, Nov 20 2019, 11:36:53)
[GCC 9.2.0]
>>>
sudo make altinstall
,我强烈建议以普通用户身份安装,例如 ./configure --prefix=~/my-python-3.7 && make -j8 && make install
。然后你可以做~/my-python-3.7/bin/python -m venv myvirtualenv
假设您当前在 virtualenv 中安装了 python 2.7。但是要使用 python3.2
,您必须使用以下内容进行更新:
$ virtualenv --python=/usr/bin/python3.2 name_of_your_virtualenv
然后通过以下方式激活您的 virtualenv:
$ source activate name_of_your_virtualenv
然后在 shell 中执行:python --version
以检查您的版本现在是否已更新。
-p
。
你应该安装了那个 Python 版本。如果你有它,那么基本上,
使用 virtualenv,
virtualenv --python=python3.8 env/place/you/want/to/save/to
带venv
python3.8 -m venv env/place/you/want/to/save/to
以上示例适用于python3.8,您可以将其更改为具有不同版本的虚拟环境,前提是它们已安装在您的计算机中。
这两个命令应该可以正常工作。
virtualenv -p python2 myenv
(对于 python2)
virtualenv -p python3 myenv
(对于 python3)
您可以使用所需的 python 版本调用 virtualenv
。例如:
python3 -m virtualenv venv
或者直接指向您的 virtualenv 路径。例如对于窗户:
c:\Python34\Scripts\virtualenv.exe venv
通过运行:
venv/bin/python
Python 3.5.1 (v3.5.1:37a07cee5969, Dec 5 2015, 21:12:44)
[GCC 4.2.1 (Apple Inc. build 5666) (dot 3)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>>
可以看到虚拟环境中安装的python版本
pip3 install virtualenv
-p
方法效果很好,但您必须记住每次都使用它。如果您的目标是通常切换到较新版本的 Python,那会很痛苦,而且还会导致错误。
您的另一个选项是设置一个与 -p
执行相同操作的环境变量。通过您的 ~/.bashrc
文件或您为登录会话管理环境变量的任何位置进行设置:
export VIRTUALENV_PYTHON=/path/to/desired/version
然后,只要您未在命令行上指定 -p
,virtualenv
就会使用它。
export VIRTUALENVWRAPPER_PYTHON=/path/to/desired/version
不起作用但此解决方案确实有效吗?
virtualenvwrapper
,与安装无关。
在 Mac 上,我使用 pyenv 和 virtualenvwrapper。我必须创建一个新的 virtualenv。你需要自制软件,如果你在 Mac 上,我假设你已经安装了它,但只是为了好玩:
ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
brew install pyenv
pyenv install 2.7.10
pyenv global 2.7.10
export PATH=/Users/{USERNAME}/.pyenv/versions/2.7.10/bin:$PATH
mkvirtualenv -p ~/.pyenv/versions/2.7.10/bin/python {virtual_env_name}
我也先冻结了我的要求,所以我可以简单地在新的 virtualenv 中重新安装:
pip install -r requirements.txt
mkvirtualenv -p ~/.pyenv/versions/2.7.10/bin/python {virtual_env_name}
个版本,而不是版本。如果 SO 允许简短的编辑,我会修复它。
pyenv
通过 pyenv-virtualenv
插件包括 virtualenv 支持,所以我发现我真的不需要 virtualenvwrapper。 my pyenv answer 中有更多详细信息。
更简单的是,通过使用命令替换为您找到 python2:
virtualenv -p $(which python2) <path/to/new/virtualenv/>
或者在使用 virtualenvwrapper 时:
mkvirtualenv -p $(which python2) <env_name>
对于 Mac(High Sierra),在 python3 上安装 virtualenv 并为 python2 创建一个 virtualenv:
$ python3 -m pip install virtualenv
$ python3 -m virtualenv --python=python2 vp27
$ source vp27/bin/activate
(vp27)$ python --version
Python 2.7.14
python3 -m pip install virtualenv
这些对于 Windows 来说似乎有点过于复杂。如果您在 Windows 上运行 python 3.3 或更高版本,则可以使用 python 启动器 py
更轻松地执行此操作。只需安装不同的 python 版本,然后运行:
py -[my version] -m venv env
这将使用 python [my version]
在您的当前目录中创建一个名为 env
的虚拟环境。举个例子:
py -3.7 -m venv env
./env/Scripts/activate
这将使用 python3.7 创建一个名为 env
的虚拟环境并激活它。不需要路径或其他复杂的东西。
py -3.7 -m venv env
(缺少 -m
)吗?
正如多个答案中已经提到的,使用 virtualenv 是一个干净的解决方案。然而,每个人都应该知道的一个小陷阱是,如果在 bash_aliases 中设置了 python 的别名,例如:
python=python3.6
这个别名也将在虚拟环境中使用。因此,在这种情况下,在虚拟环境中运行 python -V
将始终输出 3.6
,而不管使用什么解释器来创建环境:
virtualenv venv --python=pythonX.X
在窗户上:
py -3.4x32 -m venv venv34
或者
py -2.6.2 -m venv venv26
这将使用 py
launcher 为您找到正确的 python 可执行文件(假设您已安装它)。
我将这个答案用于 Windows
https://stackoverflow.com/a/22793687/15435022
py -3.4 -m venv c:\path\to\wherever\you\want\it
在 linux 的 windows 子系统中:
为python3创建环境:virtualenv --python=/usr/bin/python3 env 激活它:source env/bin/activate
我使用 pyenv 来管理我的 python 版本。
pyenv install 3.7.3
pyenv local 3.7.3
检查你的python版本:
$ python --version
Python 3.7.3
使用 venv 创建虚拟环境:
python -m venv .
然后激活虚拟环境:
source bin/activate
检查你的python版本:
$ python --version
Python 3.7.3
您可能需要删除以前的虚拟环境
rm -rf bin
2020 年底:
使用 virtualenv 的最无缝体验(附加好处:使用任何可能的 python 版本)是使用 pyenv 及其(捆绑的)pyenv-virtualenv 插件(参见 https://realpython.com/intro-to-pyenv/#virtual-environments-and-pyenv)
用法:pyenv virtualenv <python_version> <environment_name>
安装:
首先检查您是否具备所有先决条件(取决于您的操作系统):https://github.com/pyenv/pyenv/wiki/Common-build-problems#prerequisites
卷曲 https://pyenv.run |重击
执行 $SHELL
参照https://github.com/pyenv/pyenv-installer
话虽如此,现在最好的替代方法是使用 virtualenv
(和 pip
),而不是使用 Poetry(连同上面指出的 pyenv
,以处理不同的 python 版本)。
另一种选择,因为它由 PyPA(pip
和 PyPI 背后的组织)直接支持,并且自 5 月底以来已重新开始发布(自 2018 年底以来未发布...)将是 Pipenv
这适用于我在 Windows 10 中的使用,我有 Python 3.7 并希望在 Python 3.6.6 中为项目降级:
我使用“venv”创建了一个名为“venv”的新环境,我从 https://www.python.org/downloads/windows/ 下载; install "下载 Windows x86-64 可执行安装程序-" ;然后我在要创建环境的目录中使用了以下命令行
>C:\Users\...\Python\Python36\python.exe -m venv venv
最后,我使用命令行激活了环境:
>venv\Scripts\activate.bat
并通过调用检查 python 版本:
>python --version
Python 3.6.6
在 Linux Ubuntu 21.04(目前是 Python 3.9.5)上,我需要获得 Python 3.7.8 的 virtualenv。开始工作的完整步骤:
找到您想要的 Python 版本源,例如 3.7.8 在这里:https://www.python.org/downloads/release/python-378/
下载 Gzipped 源代码压缩包
使用 tar zxvf Python-3.7.8.tgz
解压缩(如果与 3.7.8 不同,请根据需要使用您的版本号进行修改)
使用以下命令将解压缩的文件夹复制到 /usr/bin:sudo cp -r Python-3.7.8 /usr/bin
cd /usr/bin/Python-3.7.8/
如果您想查看目前拥有的内容,请查看内容:ls
sudo time ./configure
sudo time make
time sudo make install
time make clean
检查你的 python 是如何设置和报告的:
which python
python --version
应该与您的主要安装有关(对我来说是 Python 3.9.5)
要检查您的新安装:
which python 3.7
python3.7 --version
应该与您的 3.7.8 安装有关
如果要运行它进行检查,请执行以下操作:
python3.7
exit()
安装 venv:
sudo apt install venv
要创建一个 venv(可能在您的仓库中,如果有,请将 .venv 添加到 .gitignore):
python3.7 -m venv .venv
要激活您的 venv:
source .venv/bin/activate
检查您的版本:
python --version
是的,上述答案是正确的,并且在基于 Unix 的系统(如 Linux 和 MAC OS X)上运行良好。
我尝试使用以下命令为 Python2 和 Python3 创建 virtualenv。
在这里,我分别使用 venv2 和 venv3 作为 Python2 和 Python3 的名称。
Python2 »
MacBook-Pro-2:~ admin$ virtualenv venv2 --python=`which python2`
Running virtualenv with interpreter /usr/local/bin/python2
New python executable in /Users/admin/venv2/bin/python
Installing setuptools, pip, wheel...done.
MacBook-Pro-2:~ admin$
MacBook-Pro-2:~ admin$ ls venv2/bin/
activate easy_install pip2.7 python2.7
activate.csh easy_install-2.7 python wheel
activate.fish pip python-config
activate_this.py pip2 python2
MacBook-Pro-2:~ admin$
Python3 »
MacBook-Pro-2:~ admin$ virtualenv venv3 --python=`which python3`
Running virtualenv with interpreter /usr/local/bin/python3
Using base prefix '/Library/Frameworks/Python.framework/Versions/3.6'
New python executable in /Users/admin/venv3/bin/python3
Also creating executable in /Users/admin/venv3/bin/python
Installing setuptools, pip, wheel...done.
MacBook-Pro-2:~ admin$
MacBook-Pro-2:~ admin$ ls venv3/bin/
activate easy_install pip3.6 python3.6
activate.csh easy_install-3.6 python wheel
activate.fish pip python-config
activate_this.py pip3 python3
MacBook-Pro-2:~ admin$
检查 Python 安装位置
MacBook-Pro-2:~ admin$ which python2
/usr/local/bin/python2
MacBook-Pro-2:~ admin$
MacBook-Pro-2:~ admin$ which python3
/usr/local/bin/python3
MacBook-Pro-2:~ admin$
它对我有用
sudo apt-get install python3-minimal
virtualenv --no-site-packages --distribute -p /usr/bin/python3 ~/.virtualenvs/py3
这是 virtualenv 的一个错误。只需升级您的点子就可以解决问题。
pip install --upgrade virtualenv
我使用 Windows,所以我应该在 pthon 路径上使用 .exe
virtualenv -p=C:\Python27\python2.exe <envname>
virtualenv -p `which python2.6` <path/to/new/virtualenv>