Skip to main content

使用pyenv实现python多版本管理

· 3 min read
orange
programmer on jvm platform

pyenv是一个python版本管理工具, 可以方便的管理多个python版本.
对于开发者来说有的时候会有多个python版本的需求.
例如, 有的项目需要python3.6, 有的项目需要python3.7. 这个时候就需要使用pyenv来管理多个python版本.
目前市面上有很多python版本管理工具, 例如pyenv, conda等.
pyenv是一个轻量级的工具, 但是功能也很强大, 适合于开发者使用.
下面将以python3.11.0为例介绍如何使用pyenv来管理多个python版本

解决方案

github上的pyenv仓库clone到本地

git clone git@github.com:pyenv/pyenv.git

配置~/.bashrc

将以下配置添加到~/.bashrc, 注意将<pyenv-path>替换为pyenv的实际路径

# pyenv
export PATH=<pyenv-path>/bin:$PATH
export PYENV_VIRTUALENV_DISABLE_PROMPT=1
eval "$(pyenv init -)"
eval "$(pyenv virtualenv-init -)"
pyenv deactivate

使~/.bashrc中的配置生效

重新加载~/.bashrc, 这么做是为了让pyenv的配置生效

source ~/.bashrc

下载python安装包到cache目录以加快安装速度

使用pyenv安装python时会比较慢, 这是因为访问国外网站会比较慢.
可以先将python的安装包下载到刚才clone的项目的cache目录下.
通过下载器例如迅雷可以更快的下载.
后续使用pyenv进行install时会从cache目录下读取安装包, 速度会快很多
3.11.0为例, 下载地址为: https://www.python.org/ftp/python/3.11.0/Python-3.11.0.tar.xz
可以进入https://www.python.org/ftp/python/ 查看所有python版本的安装包下载地址.

安装必要的依赖

使用pyenv安装python时, 需要安装一些依赖, 否则安装时会报错.
通常这些依赖的前缀为lib***-dev.

以下是我以前安装python时遇到的依赖, 各个版本可能不一样, 请根据实际情况安装.

for package in libncurses-dev build-essential zlib1g-dev libffi-dev libssl-dev libbz2-dev libreadline-dev libsqlite3-dev liblzma-dev; do
apt-get install -y $package
done
pyenv install 3.11.0

创建virtualenv, 名称为python3.11.0

pyenv virtualenv 3.11.0 python3.11.0
pyenv activate 3.11.0/envs/python3.11.0

追加pyenv activate~/.bashrc

将以下配置添加到~/.bashrc, 这样做的目的是为了每次打开terminal时自动激活virtualenv.

pyenv activate python3.11.0

备注

常用命令

  • 安装特定版本的python
pyenv install <python-version>
  • 创建虚拟环境
pyenv virtualenv <python-version> <virtualenv-name>
  • 列出所有虚拟环境
pyenv virtualenvs
  • 使用虚拟环境
pyenv activate <python-version>/envs/<virtualenv-name>
  • 解除虚拟环境
pyenv deactivate

参考