便携式 CPython
Rye 能够(并且更喜欢)下载自己的 Python 发行版,而不是您计算机上可能已经存在的版本。对于 CPython,使用来自 PyOxidizer 项目的 indygreg/python-build-standalone 构建。
这样做的动机是,它使在 Python 版本之间轻松切换变得容易,为不同的 Rye 用户提供一致的体验,并避免由于行为变化导致的奇怪错误。
不幸的是,Python 本身并没有为所有操作系统发布二进制文件(或正确的二进制文件类型),这就是 Rye 利用来自 PyOxidizer 的便携式 Python 构建的原因。
与您可以在计算机上安装的许多其他 Python 版本不同,它们是非便携式的,这意味着如果您将它们移动到机器上的新位置,或者将它们复制到另一台计算机(即使使用相同的操作系统),它们将不再运行。这对 Rye 想要做的事情来说是不利的。一方面,我们希望任何 Python 开发人员都有相同的体验,无论他们使用什么操作系统。其次,我们希望在以后启用自包含的 Python 构建,这要求 Python 安装是便携式的。
为了实现这一点,我们使用的 Python 构建包含一些与常规 Python 构建不同的更改。
限制
您应该注意到的常规 Python 版本的以下更改
-
libedit
而不是readline
:不幸的是readline
是 GPLv3 许可的,这对重新分发来说是一个危险。因此,便携式 Python 构建链接到许可更宽松的libedit
。 -
dbm.gnu
不可用。这是一个相当不常用的模块,标准库提供了替代方案。
此外,由于这些构建的创建方式,您可能会遇到一些与终端支持或 TKinter 相关的其他怪癖。其中一些问题在 常见问题解答 中进行了收集。此外,Python Standalone 构建有一个 行为怪癖 页面。
来源
便携式 CPython 构建是从 GitHub 下载的 (indygreg/python-build-standalone/releases),并且通常会验证 SHA256 哈希。一些旧版本可能没有可用的哈希,在这种情况下会跳过验证。
用法
当您将 Python 版本固定到 [email protected]
(或只是 major.minor.patch
)时,Rye 将在需要时自动为您下载正确的版本。如果已经注册了使用该名称和版本的 自定义工具链,则使用该工具链。