Pyenv - Python 版本管理工具
pyenv
能够同时管理多个 Python 版本,一键切换默认版本,Pyenv 是 rbenv
和 ruby-build
分支的 Python 实现。
举例 Ubuntu Server 16.04 LTS 环境下的安装和使用
安装
2019-01-04 更新
pyenv-installer 是项目官方新发布的 pyenv 安装脚本,一条命令就可以完成各项设置。
Install:
$ curl -L https://github.com/pyenv/pyenv-installer/raw/master/bin/pyenv-installer | bash
Update:
$ pyenv update
Uninstall:
pyenv is installed within $PYENV_ROOT (default: ~/.pyenv). To uninstall, just remove it:
$ rm -fr ~/.pyenv
and remove these three lines from .bashrc:
export PATH="~/.pyenv/bin:$PATH"
eval "$(pyenv init -)"
eval "$(pyenv virtualenv-init -)"
解决依赖
$ sudo apt install build-essential libssl-dev libbz2-dev libreadline-dev zlib1g-dev libffi-dev libsqlite3-dev
1. 克隆仓库
$HOME/.pyenv
是默认推荐的安装位置
$ git clone https://github.com/pyenv/pyenv.git ~/.pyenv
2. 定义环境变量 PYENV_ROOT
并添加 $PYENV_ROOT/bin
到 $PATH
$ echo 'export PYENV_ROOT="$HOME/.pyenv"' >> ~/.bash_profile
$ echo 'export PATH="$PYENV_ROOT/bin:$PATH"' >> ~/.bash_profile
3. 添加 pyenv init
到 shell 并启用 shims 和 autocompletion
$ echo -e 'if command -v pyenv 1>/dev/null 2>&1; then\n eval "$(pyenv init -)"\nfi' >> ~/.bash_profile
4. 重启 shell 让配置生效
$ exec "$SHELL"
注意事项
有些操作系统的 BASH_ENV
环境变量指向 .bashrc
文件。在这样的操作系统下应该把第3步
的命令 eval "$(pyenv init -)"
写入 .bash_profile
文件。
使用
查看当前默认版本
$ pyenv versions
* system (set by /home/herald/.pyenv/version)
3.7.0
列出可安装的版本
$ pyenv install --list
安装特定版本
$ pyenv install 3.7.0
设置默认版本
$ pyenv global 3.7.0
更新
更新至最新开发版
$ cd $(pyenv root)
$ git pull
更新指定的版本
拉取仓库变更信息,检出到指定版本的 tag 即可。
$ cd $(pyenv root)
$ git fetch
$ git tag
v0.1.0
$ git checkout v0.1.0
卸载
方法一 停用 pyenv
如果要停用 pynev 管理 python 版本,直接删除 .bash_profile
中 pyenv init
那一段代码即可。
方法二 彻底删除
这种方法会彻底删除 pyenv 所安装的 python 版本
$ rm -rf $(pyenv root)
故障排查
zipimport.ZipImportError: can't decompress data; zlib not available
2019-04-29 更新
系统是 MacOS 10.14.4 Mojave,可以通过设定 CFLAGS
指定 zlib 的位置。
$ CFLAGS="-I$(xcrun --show-sdk-path)/usr/include" pyenv install 3.7.3
Mac OS X 上提示 zlib 不可用
$ xcode-select --install
会员讨论区