跳至内容

便携式 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 将在需要时自动为您下载正确的版本。如果已经注册了使用该名称和版本的 自定义工具链,则使用该工具链。