跳转至

使用 pyenv 管理 Python环境


2022-03-16 by dongnan

开始之前

需要使用以下组件

virtualenv

功能:用于隔离不同项目的使用环境。 例如,你希望在项目A中使用Flask 1.1这个版本,而在项目B中使用Flask 2.0这个版本。

这时可以使用 virtualenv 创建两个相互独立的Python环境,需要注意的是 Python的版本是相同的。

pyenv

功能:用于在系统中使用多个不同的Python版本,例如 Python 3.8Python 3.10,解决不同Python版本之间造成的兼容性问题。

pyenv-virtualenv

功能:它是 pyenv 的插件,用于整合 Virtualenvpyenv 这两个软件,可以为每个项目都创建一个独立的 python 解释器。

安装部署

virtualenv 使用 apt 命令安装:

$ apt install python3-virtualenv

pyenvpyenv-virtualenv 参考以下链接文章:

使用 pyenv

查看可用的 python 版本

$ pyenv install --list | head
Available versions:
  2.1.3
  2.2.3
  2.3.7
  ..省略

安装指定的 python 版本

这里安装的为 python 3.6.15python 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.153.8.10pyenv 安装的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
回到页面顶部