https://docs.astral.sh/uv/是一个新的Python包管理工具。第一次接触是在看MCP server开发教程的时候。
它号称比pip快10-100倍。我的体验是可以让项目更工程化的管理,感觉有点像js的pnpm 包管理,而且它也使用中心化来存储和复用包。
项目结构
uv init example会产生以下项目结构:
.
├── .gitignore
├── .python-version
├── README.md
├── main.py
└── pyproject.toml
使用uv add [package] 会创建.venv 文件夹并在工作目录下创建虚拟环境。
使用uv run, uv sync, uv lock 会创建uv.lock 文件。
.
├── .venv
│ ├── bin
│ ├── lib
│ └── pyvenv.cfg
├── .python-version
├── README.md
├── main.py
├── pyproject.toml
└── uv.lock
项目依赖
使用uv add [package] 将包加入依赖并下载。
使用uv add -r requirements.txt从文本中添加依赖。
使用uv lock --upgrade-package [package]升级包,--upgrade-package 标志将尝试将指定的包更新为最新的兼容版本,同时保持锁定文件的其余部分不变。
运行指令
uv run -- flask run -p 3000 在项目文件夹下运行指令。
或者,使用uv sync来手动更新虚拟环境,然后激活虚拟环境:
uv sync
source .venv/bin/activate
flask run -p 3000
python example.py