在Linux系统上管理多个版本的Python并不是一件容易的事,特别是对于初学者。 有时甚至在想要在同一台服务器上开发并运行不同Python版本的多个项目时会变得更糟。 但是,如果你使用pyenv ,这不应该是这种情况。
另请参阅 : 如何在Linux中安装最新的Python 3.6版本
什么是Pyenv?
Pyenv是一个简单,强大且跨平台的工具,用于管理Linux系统上的多个Python版本。
- 在每个用户的基础上切换全球Python版本。
- 根据每个项目设置本地Python版本。
- 管理由anaconda或virtualenv创建的虚拟环境。
- 用环境变量覆盖Python版本。
- 从多个Python版本搜索命令等等。
pyenv如何工作?
通常,使用单个默认版本的Python来运行所有应用程序,除非您在应用程序中明确指定要使用的版本。 但是, pyenv实现了一个简单的概念,即在安装多个版本时,使用shim (轻量级可执行文件)将命令传递给想要使用的正确Python版本。
这些垫片由pyenv插入到PATH前面的目录中。 所以当你运行一个Python命令时,它会被适当的shim拦截并传递给pyenv , pyenv会建立你的应用程序指定的Python版本,并将你的命令传递给合适的Python安装。 这是pyenv如何运作的概述。
在本文中,我们将演示如何在Linux中安装最新版本的pyenv 。 我们还将演示上面列出的前三种用例。
如何在Linux中安装Pyenv
1.首先安装所有必需的软件包,以便在各自的Linux发行版中使用以下命令从源安装不同的Python版本。
------------ On Debian/Ubuntu/Linux Mint ------------ $ sudo apt install curl git-core gcc make zlib1g-dev libbz2-dev libreadline-dev libsqlite3-dev libssl-dev ------------ On CentOS/RHEL ------------ # yum -y install epel-release # yum install git gcc zlib-devel bzip2-devel readline-devel sqlite-devel openssl-devel ------------ On Fedora 22+ ------------ # yum install git gcc zlib-devel bzip2-devel readline-devel sqlite-devel openssl-devel
2.接下来,从其Github存储库中获取最新的pyenv源代码树,并使用以下命令将其安装到$HOME/.pyenv
路径中。
$ git clone https://github.com/pyenv/pyenv.git $HOME/.pyenv
3.现在您需要将环境变量PYENV_ROOT设置为指向您安装pyenv并将其导出的路径。 然后将$ PYENV_ROOT / bin添加到您的PATH中 ,像其他系统命令一样运行pyenv命令行实用程序。
您还需要通过将pyenv init添加到您的shell来启用填充以及自动填充 。 如图所示,在$ HOME / .bashrc bash启动文件中执行所有这些操作。
$ vim $HOME/.bashrc
将以下行复制并粘贴到该文件的末尾。
## pyenv configs export PYENV_ROOT="$HOME/.pyenv" export PATH="$PYENV_ROOT/bin:$PATH" if command -v pyenv 1>/dev/null 2>&1; then eval "$(pyenv init -)" fi
4.完成上述更改后,您可以获取$ HOME / .bashrc文件或重新启动shell,如图所示。
$ source $HOME/.bashrc OR $ exec "$SHELL"
如何在Linux中安装多个Python版本
5.此时,您应该准备好开始使用pyenv了 。 在安装任何Python版本之前,您可以使用此命令查看所有可用版本。
$ pynev install -l
列出多个Python版本
例如,您现在可以通过pyenv安装多个Python版本。
$ pyenv install 3.6.4 $ pyenv install 3.6.5
安装多个Python版本
7.要列出可用于pyenv的所有Python版本,请运行以下命令。 这将只显示通过pyenv本身安装的版本。
$ pyenv versions
列出已安装的Python版本
8.您可以使用以下命令检查全局Python版本,此时,默认版本应该是系统设置的版本,而不是pyenv 。
$ pyenv global
您可以使用pyenv命令设置全局python版本。
$ pyenv global 3.6.5 $ pyenv global
设置全局Python版本
9.现在可以基于每个项目设置本地Python版本,例如,如果项目位于$ HOME / python_projects / test中 ,则可以使用以下命令设置它的Python版本。
$ cd python_projects/test $ pyenv local 3.6.5 $ pyenv version #view local python version for a specific project OR $ pyenv versions
为项目设置Python版本
10. Pyenv通过pyenv-virtualenv插件管理虚拟环境,它可以在Linux和其他类UNIX系统上自动管理Python的virtualenvs和conda环境。
您可以使用以下命令开始安装此插件。
$ git clone https://github.com/yyuu/pyenv-virtualenv.git $HOME/.pyenv/plugins/pyenv-virtualenv $ source $HOME/.bashrc
11.现在我们将在名为project1的项目下创建名为venv_project1的测试虚拟环境,如下所示。
$ cd python_projects $ mkdir project1 $ cd project1 $ pyenv virtualenv 3.6.5 venv_project1
创建一个虚拟环境
12.现在,当您列出所有Python版本时,您的虚拟环境以及它们的本地python版本也应列出,如截图所示。
$ pyenv versions
列出Python版本
13.要激活virtualenv ,例如venv_project1 ,请键入以下命令。
$ pyenv activate venv_project1
注意 :您可能会在第一次使用最新版本的pyenv-virtualenv插件时收到以下消息。
pyenv-virtualenv: prompt changing will be removed from future release. configure `export PYENV_VIRTUALENV_DISABLE_PROMPT=1' to simulate the behavior.
在$ HOME / .bashrc文件中添加行export PYENV_VIRTUALENV_DISABLE_PROMPT = 1 ,在其中添加其他pyenv配置 ,并源文件模拟被强调的行为。
14.要禁用激活的virtualenv,请运行此命令。
$ pyenv deactivate
有关更多信息,可以使用以下命令列出所有pyenv命令。
$ pyenv commands
有关更多信息,请转至pyenv Github存储库: https : //github.com/pyenv/pyenv
另请参阅 : 如何为多个网站安装多个PHP版本
使用pyenv真的很简单。 在本指南中,我们展示了如何安装它,并演示了它在Linux系统上管理多个python版本的一些用例。 使用下面的反馈表来提出任何问题或分享你对这个工具的想法。