跳转至

Python的项目管理⚓︎

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

主流的一些工具:

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

pip⚓︎

过时

创建虚拟环境

python -m venv .venv

指定版本的创建

py -3.10 -m venv .venv

激活(Linux/Mac)

source .venv/bin/activate

激活(Win)

.\.venv\Scripts\Activate.ps1

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

共享依赖

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

根据requirements文件安装

pip install -r requirements.txt

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

解决方法是 pyproject.toml

然后就可以直接安装

pip install -e .

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

uv⚓︎

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

我们只需要main.pypyproject.toml

之前的过程大概是:

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

现在可以使用

uv add <package-name>

协作者可以直接使用

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