使用pyenv实现python多版本管理
pyenv是一个python版本管理工具, 可以方便的管理多个python版本.
对于开发者来说有的时候会有多个python版本的需求.
例如, 有的项目需要python3.6, 有的项目需要python3.7. 这个时候就需要使用pyenv来管理多个python版本.
目前市面上有很多python版本管理工具, 例如pyenv, conda等.
pyenv是一个轻量级的工具, 但是功能也很强大, 适合于开发者使用.
下面将以python3.11.0为例介绍如何使用pyenv来管理多个python版本
解决方案
将github上的pyenv仓库clone到本地
git clone [email protected]: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