按照 Python 工具链分类 UV属于大全包的工具 只是更偏向于一般的Python项目
- 环境管理
- 包管理
- Python 版本管理
- 包构建
- 包发布
后面俩都很简单 看看文档就好了
下面快速了解一下 UV 在各方面的使用和与其他工具的兼容性(主要是miniconda/micromamba)
下面是安装命令 会下载 uv
和 uvx
(uvx
== uv tool run
)
|
|
run-script
uv
可以直接执行脚本 附带功能
- 指定 Python 版本
- 自动安装依赖
- 自动安装 Python
对于单脚本而言 相当于
pip install
+python
|
|
|
|
env-manage
uv
的环境管理基于 venv
整体上是比较简单的
使用 uv pip install
下载包 会自动检测环境并添加相关依赖
python-manage
uv
的 Python 版本管理的方式为统一下载 然后使用时根据配置信息选用
下载信息如下
|
|
下载方式有两种 (默认存储路径: ~/.local/share/uv/python/
)
|
|
脚本头如下
|
|
project-usage
与项目相关的操作具体是
uv init
初始化项目uv add/remove
依赖管理uv lock/sync
lockfile管理uv run
执行项目uv build
构建项目
project-example
使用 uv
的项目实操 以 adbili 为例
init
一般是 uv init YOUR_PROJECT
创建项目 或者 uv init .
初始化已有项目
但这里是需要打包成为工具 所以 uv init --package -p 3.10 .
同时指定Python版本 (用3.10是为了 typing hint)
dependency
给项目添加依赖: uv add -r requirements.txt
这里注意一下 需要给 uv 换源 毕竟 uv 不读取 ~/.config/pip/pip.conf
|
|
run
因为这里是打包为工具 所以需要注意 要在 __init__.py
暴露 main
函数作为默认程序入口 如下示例
|
|
uv run adbili <args>
执行项目
publish
后续直接
uv build
uv publish
就完工了
然后就可以在 PyPI 上看见 adbili
conclusion
总体来说 uv
和 miniconda
/micromamba
是比较正交的
uv
优势在于
- 执行一些小脚本方便 个别依赖可以直接添加
- 对于项目依赖独立 方便管理
- Python项目创建到发布一站式服务
miniconda
/micromamba
优势在于
- 环境不是基于项目的 可以到处共享
- 可以装一些非pypi包
主要还是对于深度学习项目友好