如何在Linux上使用Pyenv管理多个Python版本
Pyenv是一个命令行实用程序,可同时管理多个Python版本。
它使python版本管理比以往更加容易。
它用于安装,卸载和切换到多个不同版本的Python。
Pyenv允许我们基于每个用户更改全局Python版本,为每个项目的Python版本提供支持,使用环境变量覆盖Python版本,并一次从多个Python版本中搜索命令。
Pyenv可用于在多个python环境中测试代码。
在本教程中,我们将介绍如何在GNU/Linux上安装和使用Pyenv。
在Linux上安装Pyenv
首先,安装以下软件包以避免常见的构建问题。
对于基于Debian的系统:
$sudo apt-get install -y make build-essential git libssl-dev zlib1g-dev libbz2-dev libreadline-dev libsqlite3-dev wget curl llvm libncurses5-dev libncursesw5-dev xz-utils tk-dev
对于基于RPM的系统:
$sudo yum install zlib-devel bzip2 bzip2-devel git readline-devel sqlite sqlite-devel openssl-devel xz xz-devel
对于SUSE/openSUSE:
$sudo zypper in zlib-devel bzip2 libbz2-devel git readline-devel sqlite3 sqlite3-devel libopenssl-devel xz xz-devel
我们已经安装了必要的准备工作。
现在该安装Pyenv了。
推荐的官方安装方式是使用pyenv-installer脚本。
我们所要做的就是在shell中运行以下命令来安装pyenv。
$curl -L https://raw.githubusercontent.com/pyenv/pyenv-installer/master/bin/pyenv-installer | bash
在安装结束时,安装程序将通知我们将Pyenv添加到PATH。
就我而言,我在~/.bash_profile文件中添加了以下几行。
export PATH="/home/theitroad/.pyenv/bin:$PATH" eval "$(pyenv init -)" eval "$(pyenv virtualenv-init -)"
运行以下命令以使更改生效。
$source ~/.bash_profile
Pyenv可以使用。
现在让我们看看如何使用Pyenv管理不同版本的Python。
在Linux上使用Pyenv管理多个Python版本
首先,让我们查看所有可用版本。
为此,只需运行以下命令:
$pyenv install -l
或者,
$pyenv install --list
我们应该输出类似下面的内容。
Available versions: 2.1.3 2.2.3 2.3.7 2.4 2.4.1 . . . 3.6.2 3.6.3 3.6.4 3.7.0b1 3.7-dev 3.8-dev [...]
列出当前安装的Python版本:
$pyenv versions * system (set by /home/theitroad/.pyenv/version)
默认情况下,Pyenv使用我们的系统默认python。
此处*表示默认值。
安装Python
假设系统上需要Python 2.7.14和3.6.4版本。
为此,只需运行:
$pyenv install 2.7.14
要安装Python 3.6.4,请运行:
$pyenv install 3.6.4
我们不需要sudo权限。
所有Python版本都将安装在$HOME的pyenv根目录下的单独目录下。
pyenv的默认根目录是~/.pyenv。
例如,在我的情况下,Python 2.7.14安装在/home/theitroad/.pyenv/versions/2.7.14下。
$ls /home/theitroad/.pyenv/versions/ 2.7.14 3.6.4
现在列出已安装的Python版本。
$pyenv versions * system (set by /home/theitroad/.pyenv/version) 2.7.14 3.6.4
在不同的Python版本之间切换
我们可以通过两种方式(全球和本地)切换到不同的python。
让我们使用命令查看当前的全局python版本:
$pyenv global system
没有了。
我的系统仍然使用系统默认的python。
让我们切换到其他Python版本,例如2.7.14.
$pyenv global 2.7.14
现在检查默认的Python版本:
$pyenv versions system * 2.7.14 (set by /home/theitroad/.pyenv/version) 3.6.4
我们是否注意到星星(*)?
是的,2.7.14是我们的全局默认Python版本。
我们也可以一次将多个版本指定为全局Python。
假设我们有两个版本的2.7.14和3.6.4.
如果我们更喜欢2.7.14而不是3.6.4,请运行:
$pyenv global 2.7.14 3.6.4
现在检查全局版本。
$pyenv versions system * 2.7.14 (set by /home/theitroad/.pyenv/version) * 3.6.4 (set by /home/theitroad/.pyenv/version)
现在,2.7.14和3.6.4是默认的全局版本。
我们可以通过将版本名称写入当前目录中的.python-version文件来设置本地特定于应用程序的(每个项目)Python版本。
请注意,本地版本将覆盖全局版本,并且可以通过设置PYENV_VERSION环境变量或者使用pyenv shell命令来覆盖自身。
切换到项目目录:
$cd myproject/
让我们切换到3.6.4.
$pyenv local 3.6.4
检查当前的本地python版本。
$pyenv versions system 2.7.14 * 3.6.4 (set by /home/theitroad/myproject/.python-version)
设置虚拟环境
要使用特定的Python版本设置虚拟环境,请执行以下操作:
$pyenv virtualenv 3.6.4 myenv
要使其全局可用,请运行:
$pyenv global myenv (myenv) Hyman@theitroad:~$
我们现在处于虚拟环境中。
做你想做的。
使用pip安装,删除python应用程序,而不使用pip。
全是你的。
如果要设置本地虚拟环境(每个目录):
CD到项目目录并运行:
$pyenv local mylocalenv
要删除虚拟环境,只需执行以下操作:
$pyenv uninstall myenv pyenv-virtualenv: remove /home/theitroad/.pyenv/versions/3.6.4/envs/myenv? y
删除特定的python版本
要卸载特定的python版本,例如3.6.4:
$pyenv uninstall 3.6.4
或者,只需删除要删除版本的目录。
检查当前安装的python版本:
$pyenv versions
有关更多详细信息,请通过运行以下命令来阅读帮助部分:
$pyenv
另外,检查“ pyenv help <命令名称>”以获取有关特定命令的信息。
例如,我们可以按以下方式查看“安装”命令的信息。
$pyenv help install