Python多版本管理 pyenv pyenv-virtualenv
2023年5月10日pyenv 是一款特别好用的Python版本管理器,程序员可以建立不同的目录,在不同的目录里分别运行不同版本的Python, 并且互不影响,安装的包也互不影响。github项目地址:https://github.com/yyuu/pyenv
pyenv-virtualenv 是pyenv的一个plugin(插件),可以用来创建基于不同Python版本的干净的虚拟环境。github项目地址:https://github.com/yyuu/pyenv-virtualenv
安装
1 2 |
brew install pyenv brew install pyenv-virtualenv |
添加环境变量
1 2 3 |
<span class="s1"><span class="Apple-converted-space">vim .zshrc if which pyenv-virtualenv-init > /dev/null; then eval "$(pyenv virtualenv-init -)"; fi source .zshrc </span></span> |
使用
1 2 3 4 5 |
pyenv install --list #查看python版本列表 pyenv install 3.5.0 #安装3.5.0版本 pyenv uninstall 3.5.0 # 卸载 pyenv rehash #安装/卸载完成后必须刷新 <span class="s1"> pyenv global 3.10.6 #全局指定</span> |
切换python版本
1 2 3 |
#系统全局用系统默认的Python比较好,不建议直接对其操作 #设置全局的 Python 版本,通过将版本号写入 ~/.pyenv/version 文件的方式。 pyenv global <code class=" language-bash">2.7.10</code> |
1 2 3 4 5 |
# 设置面向程序的本地版本,通过将版本号写入当前目录下的 .python-version 文件的方式。 # 通过这种方式设置的 Python 版本优先级较 global 高。pyenv 会从当前目录开始向上逐级查找 .python-version 文件,直到根目录为止。 #若找不到,就用 global 版本。 pyenv local 2.7.10 |
1 2 3 4 5 |
# 设置面向 shell 的 Python 版本,通过设置当前 shell 的 PYENV_VERSION 环境变量的方式。 # 这个版本的优先级比 local 和 global 都要高。--unset 参数可以用于取消当前 shell 设定的版本。 pyenv shell 3.5.0 #取消某版本切换 pyenv shell --unset |
优先级关系:shell——local——global
2.2 pyenv-virtualenv使用
1 2 3 4 5 6 7 8 9 10 11 12 |
# 创建新的环境,位于 ~/.pyenv/versions/ $ pyenv virtualenv 2.7.1 env271 # 切换到新的环境 $ pyenv activate env271 # 退回到系统环境 $ pyenv deactivate # 删除新创建的环境 $ rm -rf ~/.pyenv/versions/env271/ |
pyenv-virtualenv是用来创建一个干净的虚拟Python环境的命令,通常在创建干净的新项目时候使用。使用方法如下:
1.创建虚拟环境–pyenv virtualenv 版本号 虚拟环境名。
1 2 |
$ pyenv virtualenv 3.5.1 venv-3.5.1 |
创建项目,让项目使用干净的Python3.5.1的虚拟环境:
1 2 3 4 |
$ mkdir myproject $ cd myproject $ pyenv local venv-3.5.1 |
1 2 3 |
pyenv-virtualenv: source deactivate pyenv-virtualenv: source activate venv-3.5.1 |
此后,我们就会发现:只要我们进入myproject目录,就会自动激活virtualenv,退出myproject目录,就会关闭virtualenv。
如果要关闭自动激活,可以运行命令pyenv deactivate
,要重新启用的话,运行pyenv activate 虚拟环境名
2、查看当前虚拟环境列表
1 2 3 |
pyenv virtualenvs 3.5.1/envs/venv-3.5.1 (created from /usr/local/var/pyenv/versions/3.5.1) * venv-3.5.1 (created from /usr/local/var/pyenv/versions/3.5.1) |
3、删除某虚拟环境
1 2 |
pyenv uninstall 虚拟环境名 |