使用 pyenv 管理 Python环境
2022-03-16 by dongnan
开始之前
需要使用以下组件
virtualenv
功能:用于隔离不同项目的使用环境。
例如,你希望在项目A中使用Flask 1.1
这个版本,而在项目B中使用Flask 2.0
这个版本。
这时可以使用 virtualenv
创建两个相互独立的Python
环境,需要注意的是 Python的版本是相同的。
pyenv
功能:用于在系统中使用多个不同的Python版本,例如 Python 3.8
与 Python 3.10
,解决不同Python
版本之间造成的兼容性问题。
pyenv-virtualenv
功能:它是 pyenv
的插件,用于整合 Virtualenv
与 pyenv
这两个软件,可以为每个项目都创建一个独立的 python
解释器。
安装部署
virtualenv 使用 apt
命令安装:
$ apt install python3-virtualenv
pyenv
与 pyenv-virtualenv
参考以下链接文章:
使用 pyenv
查看可用的 python 版本
$ pyenv install --list | head
Available versions:
2.1.3
2.2.3
2.3.7
..省略
安装指定的 python 版本
这里安装的为 python 3.6.15
与 python 3.8.10
$ pyenv install 3.8.10
$ pyenv install 3.6.13
查看安装的 python 版本
$ pyenv versions
* system (set by /home/dongnan/.python-version)
3.6.15
3.8.10
简单来说这台机器上有3个python
版本,
其中 system
代表当前系统的 python
版本,
3.6.15
与 3.8.10
为 pyenv
安装的python
版本。
切换 python 版本
系统默认的版本:
$ python3 --version
Python 3.10.4
切换版本
$ pyenv local 3.8.10
# 版本
$ python3 --version
Python 3.8.10
# 成功
$ pyenv versions
system
3.6.15
* 3.8.10 (set by /home/dongnan/python/demo/pds/.python-version)
# 切换到系统的版本
$ pyenv local system
需要注意的是:
pyenv local
仅对当前目录及子目录生效。pyenv global
为全局环境,不建议使用global
设置全局版本。
卸载指定的 python 版本
查看已安装的 python
版本
$ pyenv versions
* system (set by /home/dongnan/python/demo/pds/.python-version)
3.6.15
3.8.10
卸载 3.6.15
版本
$ pyenv uninstall 3.6.15
pyenv: remove /home/dongnan/.pyenv/versions/3.6.15? [y|N] y
pyenv: 3.6.15 uninstalled
使用 pyenv-virtualenv
创建指定python版本的虚拟环境
$ pyenv virtualenv 3.8.10 py38
Looking in links: /tmp/tmpufgzhn8a
查看虚拟环境
其中 helloF
为之前创建的 py38
为本次创建的:
$ pyenv virtualenvs
3.8.10/envs/helloF (cated from /home/dongnan/.pyenv/versions/3.8.10)
3.8.10/envs/py38 (created from /home/dongnan/.pyenv/versions/3.8.10)
helloF (created from /home/dongnan/.pyenv/versions/3.8.10)
py38 (created from /home/dgnan/.pyenv/versions/3.8.10)
进入虚拟环境
注意多一个 (py38)
前缀:
$ pyenv activate py38
(py38) dongnan@MyPC:~/$
查看 python 版本:
$ python3 --version
Python 3.8.10
退出虚拟环境
$ pyenv deactivate py38
删除虚拟环境
$ pyenv virtualenv-delete py38
pyenv-virtualenv: remove /home/dongnan/.pyenv/versions/3.8.10/envs/py38? (y/N) y
参考文档
- https://www.cnblogs.com/dreamhighqiu/p/10991920.html
- https://zhuanlan.zhihu.com/p/27294128