前言
在Python开发中,有些情况下,我们可能面临在一台机器上同时安装多版本Python的需求。比如:
有多个Python项目,每个项目依赖不同的Python版本。
有一个Python项目,它需要同时支持多个Python版本。
那么,如何高效地在单台机器上实现多个版本Python(具体来说,这里Python指的是Python解释器)的安装和维护呢?
除此之外,我们还可能面临在一台机器上安装多个版本的某个Python第三方库的需求。比如:有多个Python项目,每个项目依赖于不同版本的Python第三方库requests。这时候,如何在单台机器上实现多版本Python requests库的安装和维护呢?
本文介绍一款神器。它提供了最简洁的方法,让上述两种需求同时得到满足。
多版本Python管理
实现多版本Python管理的工具叫做pyenv。它的安装命令为:
curl https://pyenv.run | bas<em style="color:transparent">本文来源[email protected]搞@^&代*@码)网9</em>h
安装完成后,需要进行简单配置。将下面几行配置信息添加到文件~/.bashrc中,然后执行命令exec “$SHELL”,让配置生效。
export PATH="$HOME/.pyenv/bin:$PATH" eval "$(pyenv init -)" eval "$(pyenv virtualenv-init -)"
接着,可以通过查看pyenv版本来检查安装和配置是否成功:
root@hzettv53:~# pyenv -v pyenv 1.2.12
由于pyenv是基于源代码进行Python的编译和安装的。因此,我们需要先安装编译相关的一些依赖包。由于这些依赖是操作系统相关的。因此,不同的操作系统,安装命令不同。
以常见的Ubuntu/Debian系统为例,安装命令为:
sudo apt-get install -y make build-essential libssl-dev zlib1g-dev libbz2-dev libreadline-dev libsqlite3-dev wget curl llvm libncurses5-dev libncursesw5-dev xz-utils tk-dev libffi-dev liblzma-dev python-openssl
现在就可以使用pyenv安装Python了。安装新版本之前,我们先查看系统当前安装的Python版本:
root@hzettv53:~# pyenv versions * system (set by /root/.pyenv/version) root@hzettv53:~# python -V Python 2.7.12
可见,当前使用的是操作系统自带的Python,其版本为2.7.12。这时,如果我们需要安装一个新的版本,例如Python 3.7.2, 只需执行命令:
pyenv install -v 3.7.2
注意,由于pyenv是基于Python源代码进行编译安装,因此这一步骤会有点慢,需要耐心等待。安装完成后,查看系统中的Python版本:
root@hzettv53:~# pyenv versions * system (set by /root/.pyenv/version) 3.7.2 root@hzettv53:~# python -V Python 2.7.12
可以看到,系统中已经有两个版本的Python了。但是当前使用的仍然是系统版本。如果想要使用新安装的版本,只需:
root@hzettv53:~# pyenv global 3.7.2 root@hzettv53:~# pyenv versions system * 3.7.2 (set by /root/.pyenv/version) root@hzettv53:~# python -V Python 3.7.2
这里命令pyenv global 3.7.2改变了全局的Python版本。如果只想在当前文件夹中使用Python 3.7.2,那么可以执行:pyenv local 3.7.2;如果只想在当前Shell环境中使用Python 3.7.2,那么可以执行:pyenv shell 3.7.2。