Python 环境

python版本众多,不同版本之间可能有冲突。而且不同的包环境又可能会相互冲突,比如A包依赖B包的2.0版本,但是又有C包依赖于B包的3.0版本。这样就有冲突了。 所以我们需要不同的python环境来隔离。这里的python环境是广义的,细分则又可以分为,python版本环境和python同版本的不同包环境。

mac 上推荐使用pyenv来管理python版本环境,再加上插件pyenv-virtualenv,使得pyenv还可以用来管理python的虚拟包环境。包括创建和使用。

工具安装


# 安装pyenv
brew install pyenv

# 安装 pyenv-virtualenv
brew install pyenv-virtualenv

通过上面命令只是初步安装了这两个软件,要想在shell中完美的使用,还需要在shell中做一些额外配置。这部分内容不同的shell的配置手法略有不同,我的shell是fish,所以我以fish的配置为例。

  1. 首先在shell中执行以下命令:
set -Ux PYENV_ROOT $HOME/.pyenv
fish_add_path $PYENV_ROOT/bin
  1. 然后在fish.config 文件追加写入
# 配置 pyenv
pyenv init - | source

# 配置 pyenv-virtualenv
status --is-interactive; and pyenv virtualenv-init - | source
  1. 重启shell即可应用。

工具使用

pyenv使用

1. 使用pyenv安装不同版本的python

# 列出所有可通过 pyenv 安装的 Python 版本
$ pyenv install --list

# 安装所需版本的 Python
$ pyenv install 3.11
# pyenv 会检索并安装符合要求的最新版 Python,目前为 3.11.5

# 查看所有通过 pyenv 安装的 Python 版本
$ pyenv versions
* system (set by /Users/user/.pyenv/version)
  3.11.5

# 查看 Python 的实际安装位置
$ ls ~/.pyenv/version
3.11.5

# 查看当前激活的 Python 版本及其被那个文件或环境变量设置
$ pyenv version
system (set by /Users/user/.pyenv/version)

2. 指定不同位置使用的python版本

global命令指定全局的python版本

# 查看全局默认 Python 版本
$ pyenv global

# 将全局默认 Python 指定为 3.10.13
$ pyenv global 3.10.13
$ pyenv version
3.10.13 (set by /Users/user/.pyenv/version)
$ cat ~/.pyenv/version
3.10.13

# 将全局默认 Python 指定回系统自带版本
$ pyenv global system

local 命令指定当前文件夹下的python版本

# 查看局部 Python 版本
$ pyenv local

# 将局部 Python 指定为 3.11.5
$ cd project
$ pyenv local 3.11.5
$ pyenv version
3.11.5 (set by /Users/user/project/.python-version)
$ cat .python-version
3.11.5

# 撤销之前指定过的局部 Python 的版本
$ pyenv local --unset

shell命令指定当前shell下使用的python版本,该设置优先级大于global和local。

# 查看当前 Shell 的 Python 版本
$ pyenv shell

# 将当前 Shell 的 Python 版本指定为 3.12-dev
$ pyenv shell 3.12-dev
$ pyenv version
3.12-dev (set by PYENV_VERSION environment variable)
$ echo $PYENV_VERSION
3.12-dev

# 撤销之前指定过的当前 Shell 中的 Python 版本
$ pyenv shell --unset

pyenv-virtualenv使用

Python虚拟环境相当于一个独立的 Python 版本,有自己独立的目录,也可独立安装第三方库,而不会对外界产生影响。这样不同项目都有互相独立的运行环境,非常便于项目开发。
pyenv-virtualenv 是 pyenv 的一个插件,用于管理虚拟环境。它只要创建出了虚拟python环境,它的使用和pyenv是一致的,所以主要特别之处在于如何创建虚拟python包环境。

创建虚拟环境,使用virtualenv最大的特点在于可以不在执着于pyhton的版本了,而是可以自由命名一个新环境来使用它。在使用pyenv 的global、local、shell等指定python版本命令时,现在可以直接指定这个虚拟环境名了!

$ pyenv virtualenv [Python_version] <environment_name>

# 列出创建的所有虚拟环境 (也可直接使用 pyenv versions,更通用)
$ pyenv virtualenvs

参考文档:

pyenv github
pyenv-virtualenv github
使用 pyenv 管理 Python 版本和虚拟环境

最后修改:2024 年 12 月 14 日
如果觉得我的文章对你有用,请随意赞赏