网站搜索

Pyenv - 为特定项目安装多个Python版本


在 Linux 系统上管理多个版本的 Python 并不是一件容易的事,特别是对于初学者来说。有时,当您想在同一服务器上开发和运行具有不同 Python 版本的多个项目时,情况甚至会变得更糟。但是,如果您使用 pyenv,情况就不应该是这样。

另请阅读:如何在 Linux 中安装最新的 Python 3.6 版本

什么是 Pyenv?

Pyenv 是一个简单、强大的跨平台工具,用于管理 Linux 系统上的多个 Python 版本,用于。

  • 基于每个用户切换全局 Python 版本。
  • 根据每个项目设置本地 Python 版本。
  • 管理由 anaconda 或 virtualenv 创建的虚拟环境。
  • 使用环境变量覆盖 Python 版本。
  • 从多个版本的 Python 等搜索命令。

pyenv 如何工作?

通常,除非您明确指定要在应用程序中使用的版本,否则使用单个默认版本的 Python 来运行所有应用程序。但是,当您安装了多个版本时,pyenv 实现了一个简单的概念,即使用 shims(轻量级可执行文件)将命令传递给您想要使用的正确 Python 版本。

这些垫片pyenv插入到PATH前面的目录中。因此,当您运行Python命令时,它会被适当的shim拦截并传递给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 来启用 shims 以及自动完成。在 $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 版本之前,您可以使用此命令查看所有可用版本。


pyenv install -l

6. 例如,您现在可以通过 pyenv 安装多个 Python 版本。

pyenv install 3.6.4
pyenv install 3.6.5

7. 要列出 pyenv 可用的所有 Python 版本,请运行以下命令。这只会显示通过 pyenv 本身安装的版本。

pyenv versions

8.可以通过以下命令查看全局Python版本,此时默认版本应该是系统设置的版本,而不是pyenv

pyenv global

您可以使用pyenv命令设置全局Python版本。

pyenv global 3.6.5
pyenv global

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

10. Pyenv 通过 pyenv-virtualenv 插件 管理虚拟环境,该插件可自动管理 Pythonvirtualenvsconda 环境在 Linux 和其他类 UNIX 系统上。

您可以使用以下命令开始安装此插件。

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

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.

在您添加了其他 pyenv 配置$HOME/.bashrc 文件中添加行 export PYENV_VIRTUALENV_DISABLE_PROMPT=1 ,并获取该文件以进行模拟被强调的行为。

14. 要停用已激活的 virtualenv,请运行此命令。

pyenv deactivate

有关更多信息,您可以使用以下命令列出所有 pyenv 命令。

pyenv commands

有关更多信息,请访问 pyenv Github 存储库:https://github.com/pyenv/pyenv

另请阅读:如何为多个网站安装多个 PHP 版本

使用 pyenv 真的就是这么简单。在本指南中,我们展示了如何安装它,并演示了它在 Linux 系统上管理多个 python 版本的一些用例。使用下面的反馈表提出任何问题或分享您对此工具的想法。