Python 的版本兼容性一直都是个大问题,做好版本之间的隔离就显得格外重要。pyenv 可以很好地管理不同的 Python 版本并且切换自如。本文简略介绍了 pyenv 和 virturalenv 的安装、设置与使用。
安装 pyenv
安装依赖
- 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
- Fedora/CentOS/RHEL:
dnf install zlib-devel bzip2 bzip2-devel readline-devel sqlite sqlite-devel openssl-devel xz xz-devel
- openSUSE:
zypper in zlib-devel bzip2 libbz2-devel readline-devel sqlite3 sqlite3-devel libopenssl-devel xz xz-devel
- macOS:
brew install readline xz
安装 pyenv
$ curl -L https://raw.githubusercontent.com/pyenv/pyenv-installer/master/bin/pyenv-installer | bash
zsh 用户修改 ~/.zshrc
,bash 用户修改 ~/.bashrc
,在底部加入
export PATH="~/.pyenv/bin:$PATH"
eval "$(pyenv init -)"
eval "$(pyenv virtualenv-init -)"
设置 pyenv
安装 Python
$ pyenv install --list #列出可用的 Python 版本
$ pyenv install 2.7.9 #安装 Python 2.7.9
$ pyenv install 3.6.4 #安装 Python 3.6.4
$ pyenv install anaconda3-5.0.1 #安装 Anaconda3 5.0.1
创建 virtualenv
$ pyenv virtualenv 3.6.4 venv36
$ pyenv virtualenv 2.7.9 venv27
修改默认环境
修改 ~/.pyenv/version
,使得 Python2 和 Python3 共存。
venv36
venv27
pyenv 下 pip 修改源
在 pyenv 中,先 activate 想要修改的 pip 源,如:
$ pyenv activate venv36
然后修改 $VIRTUAL_ENV/pip.conf
文件,以中科大源为例:
[global]
index-url = https://mirrors.ustc.edu.cn/pypi/web/simple
format = columns
其他命令
$ pyenv commands #列出所有可用的命令
$ pyenv versions #列出所有可用的 Python 版本
$ pyenv install 2.7.10 #安装某一 Python 版本
$ pyenv uninstall 2.7.10 #卸载某一 Python 版本
$ pyenv global 2.7.10 #设置某一版本为全局 Python 版本
$ pyenv local 2.7.10 #设置某一版本为当前文件夹 Python 版本
$ pyenv activate venv2 #进入某一环境
$ pyenv deactivate venv2 #退出某一环境