Linux 中 Python 环境/版本管理
阿菇觉得 Python 的环境/版本管理实在是依托,感觉不如 Node.js。 尤其是在 Linux 环境下,多数发行版的系统组件、工具依赖自带的 Python,折腾系统自带的 Python 环境时,一个搞不好就会把整个系统干掉。
同时,研究安全的小伙伴经常用各种工具,而很多工具又是是基于 python2 的,而当前使用的绝大多数 Linux 发行版都自带的 python3,不方便。
另一方面,我们的各种 python 项目都会有各自需要的依赖,而我们总不可能把所有需要的依赖库都直接全局安装,这很丑陋,而且很多情况下不方便项目的迁移。
流行的 python 项目/工具基本都是提供了
requirements.txt
,用户需要手动本地安装。
Windows 系统中,我们可以直接使用强大的 Anaconda 管理我们的 python 环境以及版本,Linux 就不行了。 这篇文章,总结了阿菇在 python 环境/版本管理方面的经验,可供参考。
前排提示!
本篇文章使用环境:系统Ubuntu22.04
,自带python3.10.12
。
请根据自己的 Linux 环境行事。 :::
py3环境管理 - venv
python3 推出了 venv
模块,python3.6 及以上已经默认安装,python3.5 需要手动安装:
sudo apt install python3-venv
venv 模块支持创建轻量级的虚拟环境,每个环境拥有它们自己安装在其 /site
目录下的 python 软件包(依赖)集合。
使用
使用以下指令可以创建一个 python 虚拟环境,python 版本与当前系统使用的 python 版本相同:
python3 -m venv env
实际效果就是在你的当前目录下创建一个名为 env
的目录,其中包括了特定的 python 解释器、软件库和二进制文件。你可以把上面指令中的 env
替换为你想要的虚拟环境名称(也就是那个目录名称),习惯上我们会将其命名为 venv
或者 .venv
,通常放在项目根目录下。
需要遵守一些默认规范。python 虚拟环境是可丢弃的,也就是说,我们不会将其一并打包的项目中,我们只需要给用户提供 requirements.txt
文件,用户自己创建一个虚拟环境并安装所需依赖。开发者不应该把任何项目代码放到虚拟环境目录中。同时,我们也不会移动虚拟环境,哪里需要就在哪里创建。
创建好虚拟环境后,它只是一个放在那儿的目录,需要手动激活。
假设你是在当前目录下创建了名为 venv
的虚拟环境,你使用以下指令将这个虚拟环境激活:
source ./venv/bin/active
然后你可以发现命令行中标志出当前命令行使用了虚拟环境,虚拟环境名称默认与当前项目名称相同。
图中是 zsh,配置了 oh-my-zsh,应用了 powerlevel10K 主题,通过 tabby 模拟终端工具 使用,是一个非常 nice 的组合,可以试试看!
此时使用 pip --version
会提示用户使用的是虚拟环境中的 pip
包管理工具。激活虚拟环境后我们就可以在这里面肆意安装我们需要的各种依赖了,虚拟环境与外界是隔离的,你可以想象成虚拟机,一般不会影响到系统本身。
使用完虚拟环境后,执行以下指令关闭虚拟环境:
deactivate
进一步
就是如此的干净清爽,我们只需用系统自带的 python 创建虚拟环境即可,之后的一切依赖都放在各自的虚拟环境中,不用把自己系统的 python 软件包搞得一团糟。
阿菇的建议是:不要在自己的系统中安装任何额外的 pyt