Rye!就决定是你了!
Python 环境及包管理工具
涉及 Python 环境及包管理的工具七七八八加起来不下于十几种,看得人眼花缭乱。以至于患有选择困难症的本人还在坚持使用最原始 pip + venv 来构建 Python 运行环境。为了与时俱进,经过多方比较,最后选择了 Rye 作为今后的主力生产工具了。
本来还有一个和 Rye 类似叫做 PDM 的备选工具。最后之所以选择了 Rye 基于以下几点原因:
安装和配置
使用 Scoop 进行安装 Rye 和其他相关工具:
SHELLscoop install rye uv ruff
列出所有可用的 Python 版本:
SHELLrye toolchain list --include-downloadable
这里选择安装 CPython 3.10 ~ 3.12 的版本:
SHELLrye toolchain fetch [email protected]
rye toolchain fetch [email protected]
rye toolchain fetch [email protected]
启用 uv 后端
可选步骤。uv 是一款用 Rust 编写的,性能优秀的 Python 包安装和解析工具,被设计用于替代 pip 和 pip-tools。
SHELLrye config --set-bool behavior.use-uv=true
设置代理服务器
可选步骤。
SHELLrye config --set proxy.http=http://127.0.0.1:7890
rye config --set proxy.https=http://127.0.0.1:7890
添加 PyPi 镜像
使用 rye config --show-path
命令取得配置文件路径。用文本编辑器打开配置文件,并添加如下内容:
TOML[[sources]]
name = "default"
url = "https://mirrors.aliyun.com/pypi/simple/"
此外,也可以在项目文件 pyproject.toml 中进行设置:
TOML[[tool.rye.sources]]
name = "default"
url = "https://mirrors.aliyun.com/pypi/simple/"
初始化项目
初始化一个名为 ryetest 的项目,并指定使用的 Python 版本:
SHELLrye init -p [email protected] ryetest
或对于已经创建的文件夹:
SHELLmkdir ryetest
cd ryetest
rye init -p [email protected]
默认项目是 Lib 模式,如果要创建一个可执行命令项目,可以使用如下命令:
SHELLrye init --script
Python 版本管理
可以在项目创建后更改项目使用的 Python 版本:
SHELLrye pin [email protected]
执行该命令后,只会修改当前项目下的 .python-version 文件。如果此前已经创建了 Python 虚拟环境,则需要执行下面的命令来同步修改虚拟环境中的 Python 版本:
SHELLrye sync
通过上述两个命令,可以方便地切换虚拟环境使用的 Python 版本。
项目版本管理
项目初始化后默认版本是 0.1.0。可以通过 rye version
命令来对项目版本进行管理。通过下面的命令可以让 pyproject.toml 中定义的版本号实现自增:
SHELLrye version -b major
rye version -b minor
rye version -b patch
遵循语义化规则的版本号由三部分组成,由 .
分隔,按照顺序分别是主版本号、次版本号和阶段版本号,形式如 X.Y.Z。上面命令中,major
自增主版本号;minor
自增次版本号;patch
自增阶段版本号。比如默认版本号 0.1.0 通过命令 rye version -b patch
修改后就变成了 0.1.1。
安装依赖包
安装一个或多个包:
SHELLrye add NumPy Pandas
在开发环境中安装包:
SHELLrye add --dev pytest
从 git 源安装包:
SHELLrye add FastAPI --git https://github.com/tiangolo/fastapi
从本地路径安装包:
SHELLrye add MyPyPkg --path ~/mypypkg
运行测试
需要先在开发环境中安装 pytest:
SHELLrye add --dev pytest
使用下面的运行测试代码:
SHELLrye test
此命令等价于 rye run pytest
,不过不支持将测试脚本路径作为参数传递。
测试脚本默认存放在项目路径 tests 目录下,也可以在 pyproject.toml 中指定测试脚本路径:
TOML[tool.pytest.ini_options]
testpaths = ["tests", "opt_tests/opt.py", ]
构建和发布
SHELLrye build
rye publish
发布时需要输入 PyPi 的身份验证 token。
全局安装 Python 工具
此功能和 pipx 类似。Windows 下安装的 Rye 默认会将其 shims 路径添加到 PATH 环境变量,因此通过 Rye 全局安装的 Python 工具可以在命令行中直接运行。
全局安装 PDM:
SHELLrye install pdm
删除全局安装的 PDM:
SHELLrye uninstall pdm
列出全局安装的所有工具:
SHELLrye tools list
制作 Docker 镜像
项目在初始化时需要使用 --virtual
参数,或者在 pyproject.toml 文件的 [tool.rye]
小节中设置 virtual = true
。
具体步骤参考官方文档《Building a Container with Docker》。