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 adduv 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 安装任何软件!和其他环境没有有效的联动