安装pyenv和pyenv-virtualenv管理多版本python环境

本文介绍了如何在CentOS7.6系统上使用pyenv和pyenv-virtualenv来管理多版本Python环境。内容包括pyenv的安装、配置、版本查看、安装与卸载Python、版本切换,以及pyenv-virtualenv的安装和虚拟环境的创建、激活、退出和删除。重点讲解了pyenv的shims机制以及环境变量的设置。

我的系统环境是CentOS7.6。利用pyenv可以非常方便地管理多版本python环境,比如python快速安装、python环境切换。pyenv-virtualenv可以方便地管理虚拟python环境。

理解Shims

pyenv会在你的PATH最前面插入一个shims目录:

$(pyenv root)/shims:/usr/local/bin:/usr/bin:/bin

通过一个rehashing操作就可以在该目录匹配所有已经安装的不同版本的python命令,比如python, pip等。 所有对Python可执行文件的查找都会首先被这个shims路径截获,后面的设置就不生效了。

安装pyenv

下载pyenv代码到本地

git clone https://github.com/pyenv/pyenv.git ~/.pyenv
# 如果速度慢,国内可以使用
git clone https://gitee.com/mirrors/pyenv.git ~/.pyenv

添加环境变量和设置
编辑~/.bash_profile,最后面加入:

echo 'export PYENV_ROOT="$HOME/.pyenv"' >> ~/.bash_profile
echo 'export PATH="$PYENV_ROOT/bin:$PATH"' >> ~/.bash_profile
echo -e 'if command -v pyenv 1>/dev/null 2>&1; then\n  eval "$(pyenv init -)"\nfi' >> ~/.bash_profile

重启 shell和配置

exec $SHELL
source .bash_profile

常用命令
pyenv versions – 查看系统当前安装的python列表
pyenv version – 查看系统当前使用的python版本
pyenv install -v 3.5.3 – 安装python
pyenv uninstall 2.7.13 – 卸载python
pyenv rehash – 为所有已安装的可执行文件(如:~/.pyenv/versions/bin/)创建shims, 因此每当你增删了Python版本或带有可执行文件的包(如 pip)以后,都应该执行一次本命令)
版本切换
pyenv global 3.5.3 – 设置全局的Python版本,通过将版本号写入~/.pyenv/version文件的方式
pyenv local 2.7.13 – 设置面向程序的本地版本,通过将版本号写入当前目录下的.python-version文件的方式。 通过这种方式设置的Python版本优先级较global高。
pyenv shell 2.7.13 - 设置面向shell的Python版本,通过设置当前shell的PYENV_VERSION环境变量的方式
优先级: shell > local > global

卸载pyenv
禁用pyenv很简单,只需要在~/.bash_profile中的pyenv init那行删了即可。
完全移除pyenv,先执行上面第1步,然后删了pyenv的根目录: rm -rf $(pyenv root)

安装插件pyenv-virtualenv

官网地址: https://github.com/pyenv/pyenv-virtualenv。利用pyenv-virtualenv可以快速列出、创建、删除、激活、退出虚拟环境。
安装命令

git clone https://github.com/pyenv/pyenv-virtualenv.git $(pyenv root)/plugins/pyenv-virtualenv
# 如果速度比较慢,国内可以使用
git clone https://gitee.com/baliadd/pyenv-virtualenv.git $(pyenv root)/plugins/pyenv-virtualenv

另外,一个可选配置是在~/.bash_profile最后添加:

echo 'eval "$(pyenv virtualenv-init -)"' >> ~/.bash_profile

重启 shell和配置

exec $SHELL
source .bash_profile

可以实现自动激活虚拟环境,这个特性非常有用建议都加上。

创建虚拟环境: pyenv virtualenv 2.7.13 virtual-env-2.7.13,默认使用当前环境python版本。 在文件夹(pyenvroot)/versions/my−virtual−env−2.7.13中创建一个基于Python2.7.13的虚拟环境。列出虚拟环境:pyenvvirtualenvs,对每个virtualenv显示2个,短的只是个链接,那个∗表示当前激活的。激活虚拟环境:pyenvactivatevirtual−env−2.7.13退出虚拟环境:pyenvdeactivate删除虚拟环境:pyenvuninstallvirtual−env−2.7.13如果eval"(pyenv root)/versions/my-virtual-env-2.7.13中创建一个基于Python 2.7.13的虚拟环境。 列出虚拟环境: pyenv virtualenvs,对每个virtualenv显示2个, 短的只是个链接,那个*表示当前激活的。 激活虚拟环境: pyenv activate virtual-env-2.7.13 退出虚拟环境: pyenv deactivate 删除虚拟环境: pyenv uninstall virtual-env-2.7.13 如果eval "(pyenvroot)/versions/myvirtualenv2.7.13Python2.7.13:pyenvvirtualenvsvirtualenv2,:pyenvactivatevirtualenv2.7.13退:pyenvdeactivate:pyenvuninstallvirtualenv2.7.13eval"(pyenv virtualenv-init -)"写在你的shell配置中(比如上面的~/.bash_profile), 那么当pyenv-virtualenv进入/离开某个含有.python-version目录时会自动激活/退出虚拟环境。

场景使用流程:

先创建一个虚拟环境

[root@VM-centos ~]# pyenv virtualenv 3.7.9 venv3.7.9
[root@VM-centos ~]# pyenv virtualenvs
  3.7.9/envs/venv3.7.9 (created from /root/.pyenv/versions/3.7.9)
  venv3.7.9 (created from /root/.pyenv/versions/3.7.9)

进入某个目录比如/root/pycodes/,

[root@VM-centos pycodes]# pyenv local venv3.7.9
(venv3.7.9) [root@VM-centos pycodes]# pyenv version
venv3.7.9 (set by /root/pycodes/.python-version)
(venv3.7.9) [root@VM-centos pycodes]# pyenv which python
/root/.pyenv/versions/venv3.7.9/bin/python
(venv3.7.9) [root@VM-centos pycodes]# cd ..
[root@VM-centos ~]#

利用pyenv local 设置好python环境后,进入目录会自动激活,退出会自动去激活。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值