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,但是可以理解为一个高级封装
- References
我们只需要main.py和pyproject.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"