跳转至

Python 的项目管理⚓︎

第一次深入了解偏向工程的部分(项目管理),简要做一个记录

主流的一些工具:

  • Conda(Anaconda, Miniconda) 多语言支持 依赖管理 (DL) 虚拟环境
  • pip 经典但过时
  • uv 目前答案
  • poetry
  • PDM

pip⚓︎

过时

创建虚拟环境

Bash
python -m venv .venv

指定版本的创建

Bash
py -3.10 -m venv .venv

激活 (Linux/Mac)

Bash
source .venv/bin/activate

激活 (Win)

PowerShell
.\.venv\Scripts\Activate.ps1

注:实际上修改的是 sys.path 列表(将全局目录改为自己创建的环境)

共享依赖

  • pip freeze(打印所有安装的包)
Bash
pip freeze > requirements.txt

根据 requirements 文件安装

Bash
pip install -r requirements.txt

缺点是无法识别直接依赖和间接依赖,卸载包之后间接依赖在 requirements.txt 中无法被删除

解决方法是 pyproject.toml

然后就可以直接安装

Bash
pip install -e .

这里的 -e 是使用了一个链接文件,确保虚拟环境内不会有两份源代码

uv⚓︎

底层仍然是 pip venv,但是可以理解为一个高级封装

我们只需要 main.py 和 pyproject.toml

之前的过程大概是:

Bash
python -m venv .venv
source .venv/bin/activate
edit pyproject.toml
pip install -e .

现在可以使用

Bash
uv add <package-name>

协作者可以直接使用

Bash
uv sync
Bash
# On windows
powershell -ExecutionPolicy ByPass -c "irm https://astral.sh/uv/install.ps1 | iex"