使用pyenv体验新版本的快乐
注:图片来源
一、体验新版本遇到的坑
python3.10版本在10.4正式发布了,想尝试下新功能,就从官网下载了最新的3.10版本进行安装,安装一切顺利并无卡壳,但是,当开启之前的项目时,问题来了,用不了了o(╥﹏╥)o,因为项目中使用的是pipenv虚拟环境管理的包,安装了3.10版本后,默认的Python环境变成了最新的3.10,就自动的把之前的3.9环境转到了3.10中,就导致了pipenv虚拟环境瘫痪。
那么如何不影响其他项目,还能体验到新版本的快乐呢?
答案:往下看↓
二、Python版本管理神器-pyenv
1、pyenv是什么?
pyenv是一个forked自ruby社区的简单、低调、遵循UNIX哲学的Python环境管理工具, 它可以轻松切换全局解释器版本, 同时结合vitualenv插件可以方便的管理对应的包源.
- pyenv侧重在python 解释器版本管理上, 比包管理更大一个层级, 使用pyenv可以方便的下载指定版本的python解释器, pypy, anaconda等, 可以随时自由的在shell环境中本地、全局切换python解释器
- 开发的时候不需要限定某个版本的虚拟环境, 只需要在部署的时候用pyenv指定某个版本就好了
- pyenv切换解释器版本的时候, pip和ipython以及对应的包环境都是一起切换的, 所以如果你要同时运行ipython2.x和ipython3.x多个解释器验证一些代码时就很方便
- pyenv也可以创建好指定的虚拟环境, 但不需要指定具体目录, 自由度更高, 使用也简单
2、安装pyenv
使用brew进行安装
brew install pyenv
在配置文件中添加(.zshrc)
export PYENV_ROOR="$HOME/.pyenv"
export PATH=$PYENV_ROOT/shims:$PATH
eval "$(pyenv init -)"
使修改配置生效
source .zshrc
测试是否安装成功
pyenv --version
-----
pyenv 2.0.4
3、简单使用
# 查看当前版本
pyenv version
# 查看所有版本
pyenv versions
# 查看所有可安装的版本
pyenv install --list
# 安装指定版本
pyenv install 3.10.0b4
# 安装新版本后rehash一下
pyenv rehash
# 删除指定版本
pyenv uninstall 3.10.0b4
# 指定全局版本
pyenv global 3.10.0b4
# 指定多个全局版本, 3版本优先
pyenv global 3.10.0b4 2.7.14
4、包管理插件pyenv-virtualenv
1. brew安装
brew install pyenv-virtualenv
2. 安装完成功会有提示,要添加配置(跟上面一样)
eval "$(pyenv virtualenv-init -)"
3. 使用虚拟环境
# 创建一个3.10.0b4版本的名字叫做py3.10的虚拟环境
pyenv virtualenv 3.10.0b4 py3.10
# 激活环境
pyenv activate py3.10
# 关闭环境
pyenv deactivate py3.10
# 查看所有的虚拟环境
pyenv virtualenvs
# 删除虚拟环境(两种方式)
pyenv uninstall py3.10
pyenv virtualenv-delete py3.10
三、解决开头提到的问题
1、查看可下载的Python版本
pyenv install --list
2、下载对应的版本(选择3.10.0b4)
pyenv install 3.10.0b4
pyenv rehash
3、查看查看所有Python版本
pyenv versions
可以看到刚才下载的新版本
另外还可以看到,system上有一个*,代表此时的环境是用的系统默认环境,*指向哪个环境就代表使用的那个环境。
4、指定全局版本为新版本(3.10.0b4)
pyenv global 3.10.0b4
5、使用
pip3.10 list
python3.10
6、如果pyenv指向的是系统默认环境,则会提示找不到相应的环境
附件
参考资料
https://github.com/pyenv/pyenv
https://github.com/pyenv/pyenv-virtualenv