python环境管理
- poetry 是一个比较现代的 python 环境管理工具
- pyenv 是比 brew/官网更好的 python 安装渠道
- 最后决定用 uv
- uv 可以进行 python 版本、环境、依赖的全方面的管理,可以取代 pyenv, poetry, venv 之类的功能
- 感觉 uv 的学习路径不算短
Uv 学习笔记 #
有很多人性的自动化操作,不需要每一个操作都完美无缺,很多东西都是自动完成的
安装 python #
- 直接
uv python install以安装 python 版本 uv python list可以显示已安装和未安装的全部 python 版本- 不需要手动下载 python, uv 也可以在需要运行命令时自动安装需要用到的 python
- 可以通过修改配置文件禁用 python 的自动下载
- uv 用 system 来称呼系统中已经安装的 python 版本
Project 管理 #
- 进入仓库之后用
uv init命令进行初始化,这会生成几个文件pyproject.toml用于管理依赖,其中包含对第三方 package 的版本要求uv.lock用于记录每一个第三方库的版本的精确信息,不建议 manually 修改- 这个文件应当被 git 记录,进入版本控制中
- 第一次运行
uv run等命令的时候会自动生成uv.lock以及虚拟环境.venv文件- 也可以通过
uv sync手动创建虚拟环境文件
- 也可以通过
- 使用
uv add和uv remove来进行依赖和包的同步管理,uv add的信息会加入到pyproject.toml中,并且自动进行缺失包的下载- 不建议使用
uv pip instlall来安装第三方 package,而应该用uv add来告诉 uv 你需要什么库,完成依赖管理和包管理的完美贴合
- 不建议使用
- 对包进行升级可以用
uv lock --upgrade-package <package-name> uv lock可以用来更新 lock 文件以和现在的第三方库进行同步uv tree可以显示全部 package 的依赖关系
Python 环境管理 #
- 用
uv venv --python 3.10可以创建一个虚拟环境,激活需要source.venv/bin/activate - 只有通过
uv run运行的命令才会用到 uv 的环境,如果要运行多条命令最好激活环境
Publish #
uv version可以查看当前的版本
Others #
- 和 jupyter 联动:只需要安装一个 ipython
uv add --dev ipykernel
- 通过
uv tool可以进行全局的管理,适用于 ruff 这样的应当被全局安装的 pip 工具- uvx 或者 uv tool run 是暂时运行一个 tool,uv tool install 可以安装一个工具
uv run可以用当前 uv 环境运行某个 python 脚本(好像没什么场景会用到?)
其他 #
- running scripts
- 集成到其他软件上,比如 docker
- 不要用 brew 安装任何软件!和其他环境没有有效的联动