通过virtualenv使用不同的Python版本
- 2024-11-21 08:33:00
- admin 原创
- 37
问题描述:
如何为指定版本的 Python 创建虚拟环境?
解决方案 1:
注意:对于Python 3.3+,请参见下面的 Aelfinn 的回答。
创建虚拟环境实例时使用--python
(或短-p
)选项指定要使用的 Python 可执行文件,例如:
virtualenv --python="/usr/bin/python2.6" "/path/to/new/virtualenv/"
解决方案 2:
从 Python 3.3 开始,文档建议使用 stdlib 创建虚拟环境:
python3 -m venv "my_env_name"
另外,如果我们想要一个特定的 Python 版本,比如说 3.6,那么我们可以使用
python3.6 -m venv "my_env_name"
确保与现有系统 Python 一起安装引用的 Python 版本。
解决方案 3:
有一个更简单的方法,
virtualenv venv --python=python2.7
感谢一条评论,仅当您在系统级安装了 python2.7(例如 /usr/bin/python2.7)时,这才有效。
否则,如果您使用 homebrew,您可以使用路径来获得您想要的内容。
virtualenv venv --python=/usr/local/bin/python
which python
您可以使用(Linux) 或py -0p
(Windows)找到 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`
解决方案 4:
venv
当您在共享托管环境中并且需要从源代码安装和编译 Python,然后从您的 Python 版本创建时,您可以遵循以下步骤。对于 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
当然,这可以适用于您想要复制工作和部署的精确环境的任何情况。
解决方案 5:
virtualenv --python=/usr/bin/python2.6 <path/to/myvirtualenv>
解决方案 6:
对于我来说,在 Windows 下这是可行的:
virtualenv --python=c:Python25python.exe envname
没有python.exe
我得到的,WindowsError: [Error 5] Access is denied
我已经安装了 Python2.7.1 和 virtualenv 1.6.1,而我想要 python 2.5.2。
解决方案 7:
[2019 年 11 月] 我需要在基于 Python 3.8 的 Arch Linux 系统上安装 Python 3.7 环境 (env)。系统上不再有 Python 3.7,因此我无法降级 Python 来安装所需的软件包。
此外,我想在虚拟环境 (venv) 中使用该包/Python 3.7。这就是我的做法。
下载Python版本源文件:
我从以下网址下载了 Python 3.7.4 源文件
到
/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 操作环境/系统上]:
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]
>>>
解决方案 8:
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 版本。但是,您可以指定计算机上安装的任何 Python 版本,以便在新环境中使用-p flag
:
$ 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 [命令] 的副本,您可以使用它来安装其他包。
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
,我可以使用这些名称而不是完整路径。
=========虚拟环境包装器==========
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 环境变量指定的位置创建环境。这样可以将所有环境保存在一个位置。
解决方案 9:
假设您目前在虚拟环境中安装了 Python 2.7。但想要使用python3.2
,您必须使用以下命令进行更新:
$ virtualenv --python=/usr/bin/python3.2 name_of_your_virtualenv
然后通过以下方式激活你的虚拟环境:
$ source activate name_of_your_virtualenv
然后python --version
在 shell 中执行:检查你的版本是否已更新。
解决方案 10:
你应该已经安装了该版本的 Python。如果你已经安装了,那么基本上,
使用虚拟环境,
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,您可以将其更改为具有不同版本的虚拟环境,只要它们安装在您的计算机上即可。
解决方案 11:
这两个命令应该可以正常工作。
virtualenv -p python2 myenv
(适用于 python2)
virtualenv -p python3 myenv
(适用于 Python3)
解决方案 12:
你可以virtualenv
使用你想要的 Python 版本来调用。例如:
python3 -m virtualenv venv
或者直接指向你的虚拟环境路径。例如对于 Windows:
c:Python34Scriptsirtualenv.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版本
解决方案 13:
在 2024 年的 macOS 上;使用 pyenv 时:
brew install pyenv
..并按照安装后说明设置 pyenv,请参阅;https://github.com/pyenv/pyenv? tab=readme-ov-file#unixmacos
基本上就是在你的~/.bashrc
或~/.zshrc
文件中添加这些行:
export PATH="$HOME/.pyenv/bin:$PATH"
eval "$(pyenv init --path)"
eval "$(pyenv virtualenv-init -)"
安装你喜欢的 Python 版本,例如3.11.6
pyenv install 3.11.6
现在,您可以在项目的同一目录中创建一个新的 python 虚拟环境,如下所示:
~/.pyenv/versions/3.11.6/bin/python -m venv name-of-your-venv
激活环境:
source name-of-your-venv/bin/activate
检查此 python 环境中活动的 python 版本:
(venv) python --version
停用环境:
(venv) deactivate
清理环境:
只需删除名为 python env 的文件夹,因此在这种情况下:
rm -rf name-of-your-venv
不要在 git 中提交你的虚拟环境。为确保万无一失,请将其添加到你的.gitignore
文件中:
name-of-your-venv/
另外,请确保不要使用此文件夹来扫描 linting、测试、覆盖率,因为它会减慢这些过程。因此,在用于black
linting、isort
对导入进行排序、pytest
单元测试和poetry
管理依赖项的 Python 项目中,pyproject.toml
文件将包含以下内容:
[tool.pytest.ini_options]
norecursedirs = [".git", "name-of-your-venv"]
[tool.black]
exclude = ".git|name-of-your-venv"
[tool.isort]
skip = [".git", "name-of-your-venv"]
一个好的做法是命名你的虚拟环境venv
或.venv
解决方案 14:
这种-p
方法效果很好,但你每次都要记住使用它。如果你的目标是切换到较新版本的 Python,那么这很麻烦,也可能导致错误。
另一个选择是设置一个与 相同的环境变量。通过文件或管理登录会话的环境变量的任何位置-p
进行设置:~/.bashrc
export VIRTUALENV_PYTHON=/path/to/desired/version
然后,virtualenv
当您未-p
在命令行中指定时,将使用它。
解决方案 15:
在 Mac 上,我使用 pyenv 和 virtualenvwrapper。我必须创建一个新的虚拟环境。你需要 homebrew,如果你使用的是 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}
我还首先冻结了我的要求,以便我可以简单地在新的虚拟环境中重新安装:
pip install -r requirements.txt
解决方案 16:
更简单的是,通过使用命令替换来找到 python2:
virtualenv -p $(which python2) <path/to/new/virtualenv/>
或者使用 virtualenvwrapper 时:
mkvirtualenv -p $(which python2) <env_name>
解决方案 17:
在 Windows 上:
py -3.4x32 -m venv venv34
或者
py -2.6.2 -m venv venv26
这将使用py
启动器为您找到正确的 python 可执行文件(假设您已安装它)。
解决方案 18:
对于 Windows 来说,这些似乎有点过于复杂。如果您在运行 Python 3.3 或更高版本的 Windows 上,则可以使用 Python 启动器py
更轻松地执行此操作。只需安装不同的 Python 版本,然后运行:
py -[my version] -m venv env
env
这将在当前目录中使用 python创建一个名为的虚拟环境[my version]
。例如:
py -3.7 -m venv env
./env/Scripts/activate
这将创建一个名为 using python3.7 的虚拟环境env
并激活它。无需路径或其他复杂的东西。
解决方案 19:
正如在多个答案中提到的那样,使用virtualenv是一个干净的解决方案。但是每个人都应该注意的一个小陷阱是,如果在bash_aliases中设置了 python 的别名,例如:
python=python3.6
此别名也将在虚拟环境中使用。因此,在这种情况下,无论使用什么解释器创建环境,python -V
在虚拟环境中运行都将始终输出:3.6
virtualenv venv --python=pythonX.X
解决方案 20:
对于 Mac(High Sierra),在 python3 上安装虚拟环境并为 python2 创建一个虚拟环境:
$ python3 -m pip install virtualenv
$ python3 -m virtualenv --python=python2 vp27
$ source vp27/bin/activate
(vp27)$ python --version
Python 2.7.14
解决方案 21:
我在 Windows 上使用了此解决方案
https://stackoverflow.com/a/22793687/15435022
py -3.4 -m venv c:path owhereveryouwantit
解决方案 22:
我使用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
解决方案 23:
在 Linux Ubuntu 21.04(当前为 Python 3.9.5)上,我需要获取 Python 3.7.8 的虚拟环境。完整操作步骤:
找到你想要的 Python 版本源,例如 3.7.8 在这里: https: //www.python.org/downloads/release/python-378/
下载 Gzip 源码
解压后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(可能在您的 repo 中,如果是这样,请将 .venv 添加到 .gitignore):
python3.7 -m venv .venv
要激活你的 venv:
source .venv/bin/activate
检查你的版本:
python --version
解决方案 24:
假设我想使用 python 3.8 并且我正在使用 MacOS。
brew install python@3.8
然后,
python3.8 -m venv venv
解决方案 25:
在 Linux 的 Windows 子系统中:
为python3创建环境:
virtualenv --python=/usr/bin/python3 env
激活它:
source env/bin/activate
解决方案 26:
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
curl https://pyenv.run | bash
exec $SHELL
参见https://github.com/pyenv/pyenv-installer
virtualenv
话虽如此,如今使用(和)的最佳替代方案pip
是Poetry(以及pyenv
上面指出的,以处理不同的 Python 版本)。
另一个选择是Pipenv,因为它直接由 PyPA(背后的组织pip
和 PyPI)支持,并且已于 5 月底重新开始发布(在此之前自 2018 年底以来没有发布过...)
解决方案 27:
这适用于我在 Windows 10 中的使用,其中我使用的是 Python 3.7,并且想要降级为 Python 3.6.6 中的项目:
我使用“venv”创建了一个名为“venv”的新环境,我从https://www.python.org/downloads/windows/下载;安装“下载 Windows x86-64 可执行安装程序-”;然后我在我想要创建环境的目录中使用了以下命令行
>C:Users...PythonPython36python.exe -m venv venv
最后,我使用命令行激活了环境:
>venvScriptsactivate.bat
并通过调用以下命令检查 Python 版本:
>python --version
Python 3.6.6
解决方案 28:
这个问题的答案不应该那么复杂......
TL,DR:
在你的系统上安装你喜欢的多个 Python 版本并使用:
/c/path/to/any/version/of/python -m venv my_venv
=============================================
我使用 venv 安装虚拟环境
python -m venv <where/to/and/name_of_venv>
如果你尝试,which python
当你说“python”时,你会看到你指的是哪个python。例如,对我来说它是:
which python
结果:/c/Program Files/Python36/python
所以,现在您有答案了!您可以在系统上安装任何版本的 Python,并同时拥有多个版本。例如,我在这个目录中安装了 Python3.7:“C:\Program Files\Python37”。因此,现在我不再使用“python”,而是通过以下方式指定哪个 Python /c/Program Files/Python37/python
:
/c/Program Files/Python37/python -m venv my_venv
(不要忘记去掉路径中的空格)
就是这样!
解决方案 29:
是的,上述答案是正确的,并且在基于 Unix 的系统(如Linux和MAC OS X)上运行良好。
我尝试使用以下命令为Python2和Python3创建虚拟环境。
这里我分别使用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$
解决方案 30:
我使用 Windows,所以我应该.exe
在 pthon 路径上使用
virtualenv -p=C:Python27python2.exe <envname>
- 2024年20款好用的项目管理软件推荐,项目管理提效的20个工具和技巧
- 2024年开源项目管理软件有哪些?推荐5款好用的项目管理工具
- 项目管理软件有哪些?推荐7款超好用的项目管理工具
- 项目管理软件哪个最好用?盘点推荐5款好用的项目管理工具
- 项目管理软件有哪些最好用?推荐6款好用的项目管理工具
- 2024年常用的项目管理软件有哪些?推荐这10款国内外好用的项目管理工具
- 项目管理软件有哪些,盘点推荐国内外超好用的7款项目管理工具
- 2024项目管理软件排行榜(10类常用的项目管理工具全推荐)
- 项目管理软件排行榜:2024年项目经理必备5款开源项目管理软件汇总
- 项目管理必备:盘点2024年13款好用的项目管理软件