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


当前回答

〔2019年11月〕我需要在基于Python 3.8的Arch Linux系统上安装Python 3.7环境(env)。Python 3.7已不在系统中,因此我无法降级Python,以安装所需的包。

此外,我想在虚拟环境(venv)中使用该包/Python3.7。我就是这样做的。


下载Python版本源文件:

我从

https://www.python.org/downloads/source/

to

/mnt/Vancouver/apps/python_versions/src/python-3.7.4.tgz

然后,我将存档(源文件)提取到

/mnt/Vancouver/apps/python_versions/src/python-3.7.4/


安装:

[注:在我的系统env中,不是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.html12.2.创建虚拟环境用于创建和管理虚拟环境的模块称为venv。venv通常会安装您可用的最新版本的Python。如果您的系统上有多个版本的Python,则可以通过运行python3或您想要的任何版本来选择特定的Python版本。要创建虚拟环境,请确定要放置虚拟环境的目录,并以脚本的形式运行venv模块,路径如下:python3-m venv教程env这将创建教程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] 
>>>

其他回答

2020年底:

使用virtualenv最无缝的体验(附加的好处:任何可能的python版本)是使用pyenv及其(捆绑的)pyenv virtualenv插件(cfhttps://realpython.com/intro-to-pyenv/#virtual-环境和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版本)。

另一个选项是Pipenv,因为它直接受到PyPA(pip和PyPI背后的组织)的支持,并且从5月底开始重新发布(在那之前,从2018年底就没有发布…)

在我的Windows下,这是有效的:

virtualenv --python=c:\Python25\python.exe envname

没有python.exe,我得到了Windows错误:[错误5]访问被拒绝我用virtualenv1.6.1安装了Python2.7.1,我想要Python2.5。

更简单的是,使用命令替换为您查找python2:

virtualenv-p$(哪个python2)<path/to/new/virtalenv/>

或者使用virtualvwrapper时:

mkvirtualenv-p$(哪个python2)<env_name>

有一种更简单的方法,

virtualenv venv --python=python2.7

感谢您的评论,只有在系统级安装了python2.7(例如/usr/bin/python2.7)时,这才有效。

否则,如果你正在使用自制程序,你可以使用路径来给你想要的。

virtualenv venv --python=/usr/local/bin/python

您可以找到安装python(Linux)或py-0p(Windows)的路径

这也适用于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`

在mac上,我使用pyenv和virtualnvwrapper。我必须创造一个新的虚拟世界。你需要自制程序,如果你在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