现象
以前使用 WSL Debian 的时候,习惯使用 Anaconda 对版本进行管理。然而,加上 Debian 自带的 apt 用于包管理,conda 和 pip 同时作为 Python 的包管理器,造成了一定程度上多重嵌套和混乱(具体情况详见下图)。
经过之前一年的使用,我认为如果单独使用 Anaconda 作为环境管理器来说还是不错的,因为其创建环境时包括了设定开发所使用的 Python 版本,创建虚拟环境命令如下:
conda create -n envname python=3.9
查看环境也非常地方便:
conda env list
此外,具体的其他指令详见 Conda用户指导手册 。但是说回问题本身,正如流程图中所示,Anaconda Repository 和 Conda-forge 等 Conda 频道远没有 PyPI 齐全, 下载不到的库还需要去 PyPI 补齐,这是使用过程中的一大硬伤。仅仅将 Anaconda 作为一个包管理器使用,Conda 频道就显得有些冗余了。
解决方案
由此,我们吸取了在 WSL Debian 中环境管理混乱的经验,并采用了下图流程管理 Python 的虚拟环境和包。
采用 pyenv 库可以有效隔离系统环境与项目环境的 Python 版本,在使用命令 pyenv versions 后可以清晰地看到系统与其他安装的 Python 版本,其中 * 所在行代表了当前是使用系统版本,还是其他 Python 版本(以下输出显示当前属于系统版本)。
* system (set by PYENV_VERSION environment variable)
3.13.7
3.13.7/envs/myproject
myproject --> /home/username/.pyenv/versions/3.13.7/envs/myproject
至于具体的项目环境的切换和查看,则参考 pyenv virtualenv插件文档。
具体步骤
详情参考 在 Linux 系统中安装和使用 pyenv:轻松管理多版本 Python 。
第一步:安装依赖包
以下是在 Arch Linux 中的依赖包安装指令。
sudo pacman -S --needed base-devel openssl zlib xz git
第二步:克隆 pyenv 仓库
git clone https://github.com/pyenv/pyenv.git ~/.pyenv
第三步:配置环境变量
对于 bash 用户来说,可以通过 echo 或手动编辑 .bashrc 文件添加以下内容来配置环境变量:
export PYENV_ROOT="$HOME/.pyenv"
export PATH="$PYENV_ROOT/bin:$PATH"
eval "$(pyenv init -)"
第四步:验证
通过查看版本以验证安装是否成功。
pyenv --version
第五步:安装指定 Python 版本
使用 pyenv install --list 命令查看所有可安装的 Python 版本,使用以下命令安装特定版本(以下显示安装版本为 3.13.7 ):
pyenv install 3.13.7
使用 pyenv versions 命令即可检查版本,输出如 解决方案 中所示。
第六步:安装并配置 pyenv-virtualenv 插件
配合插件 pyenv-virtualenv 的操作在 在 Linux 系统中安装和使用 pyenv:轻松管理多版本 Python 的 常见实践 中已经交代的非常细致,这里不多赘述,照抄即可。

