下载(高级)
我们为许多平台和操作系统提供预编译的二进制文件
与 Python 2.7 兼容的版本 - **PyPy2.7 v7.3.16**
与 Python 3.9 兼容的版本 - **PyPy3.9 v7.3.16**
与 Python 3.10 兼容的版本 - **PyPy3.10 v7.3.16**
操作系统 |
PyPy3.10 |
PyPy3.9 |
PyPy2.7 |
备注 |
---|---|---|---|---|
Linux x86 64 位 |
与 CentOS7 及更高版本兼容。 |
|||
Windows 64 位 |
与任何 Windows 64 位系统兼容,您可能需要 VC 运行时库安装程序 vcredist.x64.exe |
|||
MacOS arm64 |
MacOS >= 11。未签名,对于签名包,请使用 conda。 |
|||
MacOS x86_64 |
MacOS >= 10.15,不适用于 Mojave 及更低版本。未签名,对于签名包或旧版本,请使用 conda。 |
|||
Linux ARM64 |
与 CentOS7 及更高版本兼容。 |
操作系统 |
PyPy3.10 |
PyPy3.9 |
PyPy2.7 |
备注 |
---|---|---|---|---|
Linux x86 32 位 |
与 CentOS7 及更高版本兼容 |
|||
S390x |
在 Redhat Linux 7.2 上构建 [1] |
“JIT 编译器”版本¶
上面的二进制文件包含一个即时编译器。在 x86-32 上,它们仅适用于具有 SSE2 指令集的 CPU(如今大多数 CPU 都有)。它们还包含 stackless 扩展,例如 greenlets。
Linux 二进制文件和常见发行版¶
从 7.3 版本开始,linux x86 二进制文件附带 OpenSSL、SQLite3、libffi、expat 和 TCL/TK 二进制库的版本,这些库已链接到其中。这使得二进制文件“可移植”,因此它们应该在任何当前的基于 glibc 的 linux 平台上运行。这些想法来自 portable-pypy 包。
这种解决可移植性问题的方案意味着打包的库的版本被固定到所提供的版本,因此更新您的系统库不会影响此 PyPy 安装。另请参阅下面关于 SSL 证书的说明。
对于 s390x 和 ppc64,二进制文件针对特定的操作系统。这些二进制文件是动态链接的,因此可能无法使用,这是因为 linux 二进制文件兼容性的悲惨故事。这意味着Linux 二进制文件只能在它们旁边写出的发行版上使用,除非您准备通过添加指向它尝试打开的库的符号链接来修改您的系统。有更好的解决方案
从您的发行版供应商处下载 PyPy(通常是过时的版本):Ubuntu (PPA),Debian,Homebrew,MacPorts,Fedora,Gentoo 和 Arch 据悉都打包了 PyPy,但更新程度各不相同。 FreshPorts 为 FreeBSD 打包。
使用 conda,这将使安装二进制编译的软件包成为可能。
使用系统库和
pypy/lib_pypy/pypy_tools
中的脚本 重新编译 基于 CFFI 的 TCL/TK、OpenSSL 或 sqlite3 模块。此解决方案不会解决与 libffi 的兼容性问题,因为 libffi 已嵌入到 PyPy 中。或者 翻译 自己的 PyPy。
注意
SSL 证书
虽然 Linux 二进制文件附带 OpenSSL 库,但它们不附带 SSL 证书的证书存储。如果您希望使用 SSL 模块,则需要一个有效的证书存储。您可以使用 certifi 包并将 SSL_CERT_FILE
设置为 certifi.where()
,或者安装您的平台证书,这些证书应该会被 _ssl
模块发现。
以前的版本可以从 这里 下载,也可以直接从 buildbot 的 镜像 下载。
如果您的 CPU 非常非常旧,它可能是没有 SSE2 的 x86-32。对于手动翻译没有 SSE2 的 PyPy 的 JIT (--jit-backend=x86-without-sse2
) 存在未经测试的支持,但请注意,您的机器可能性能太低,以至于在它上面运行 CPython 首先是更好的选择。
PyPy-STM 2.5.1¶
这是一个特殊的 PyPy 版本!请参阅 软件事务内存 (STM) 文档。
其他版本¶
PyPy 的其他版本是
安装¶
所有二进制版本都打包在 tar.bz2
或 zip
文件中。解压缩后,它们将在原地运行。您可以在您的主目录中的某个位置或例如 /opt
中解压缩它们。如果您愿意,可以从 /usr/local/bin/pypy
等位置到 /path/to/pypy_expanded/bin/pypy
创建一个符号链接。不要将可执行文件 pypy
移动或复制到树之外——为它创建一个符号链接,否则它将找不到它的库。
安装更多模块¶
使用 conda 是以最少的编译获得二进制包的最简单方法。对于具有二进制扩展的软件包,典型的 pip
工作流程要求软件包维护者为 PyPy 提供一个轮子,这对负担过重的维护者来说有时工作量太大。有关更多信息,请参阅 安装文档_
如果您使用的是发行版的 PyPy 包,我们建议您将软件包安装到虚拟环境中。如果您尝试构建一个模块,并且构建过程抱怨“缺少 Python.h”,您可能需要安装 pypy-dev 包。
从源代码构建¶
(查看更多构建 说明)
-
获取源代码。首选方法是使用 git 签出当前主干。主干通常有效,并且当然是最新的
该目录包含 PyPy 2。对于 PyPy 3,请切换到正确的分支。
或者,获取以下较小的包,这些包包含与上述二进制文件相同版本的源代码。
pypy2.7-v7.3.16-src.tar.bz2(源代码,仅限 PyPy 2.7)
pypy3.9-v7.3.16-src.tar.bz2(源代码,仅限 PyPy 3.9)
pypy3.10-v7.3.16-src.tar.bz2(源代码,仅限 PyPy 3.10)
-
确保您已安装依赖项。请查看此处的列表 此处。
-
进入
goal
目录 -
运行
rpython
脚本。以下是常见选项组合(也适用于python
而不是pypy
;即使要构建 PyPy 3,也需要 CPython 2.7 或 PyPy 2) 尽情享受 Mandelbrot
:-)
。翻译大约需要半小时才能完成,在 32 位系统上大约需要 3GB 内存,在 64 位系统上大约需要 5GB 内存。(不要在内存不足的机器上启动翻译!它只会一直交换。在这种情况下,请参阅下面的说明。)如果您想以 root 身份安装此 PyPy,请阅读下一节 打包。
备注
建议使用 PyPy 进行翻译,而不是使用 CPython,因为它速度快两倍。您只需下载 PyPy 的官方版本(带有 JIT)即可。如果您确实必须使用 CPython,请注意这里指的是 CPython 2.7,而不是 CPython 3.x。(旧版本如 2.6 已过时。)
-
在某些 32 位系统上,2 或 3 GB 内存的地址空间限制可能是一个问题。更一般地说,您的内存可能略微不足。首先要注意,如今 2 GB 确实不够用;在 Windows 上,您首先需要参考 Windows 构建说明。更准确地说,在 32 位系统上,使用 PyPy 进行翻译需要 2.7 GB 内存,使用 CPython 进行翻译需要 2.9 GB 内存。有两种解决方法
1. 使用 PyPy,而不是 CPython。如果您还没有任何 PyPy,甚至没有旧版本,那么您需要先构建一个,并删除一些部分。因此,首先使用以下命令进行翻译
然后将
pypy-c
和libpypy_c.so
复制到其他位置,最后使用...pypy-c ../../rpython/bin/rpython -Ojit
调用它。2. 即使使用 PyPy 而不是 CPython 也还不够,请尝试调整一些内部参数。示例(速度较慢,但可以节省大约 400MB 内存)
您可以使用
--source
运行翻译,它只构建 C 源文件(并在最后打印位置)。然后您可以cd
到该目录并执行make
。这是另一种减少内存使用的方法。请注意,之后,如果您想导入基于 cffi 的模块,则必须手动运行pypy-c .../pypy/tool/build_cffi_imports.py
。与其他 JIT 一样,PyPy 在某些为了额外的安全功能而牺牲了完全 POSIX 兼容性的 Linux 发行版上无法正常工作。例如,使用 PAX,您必须使用
paxctl -cm
运行 PyPy。这也适用于翻译(除非您使用 CPython 运行翻译并指定--source
)。
打包¶
从源代码翻译 PyPy 后,可以使用 package.py
脚本创建类似于上面 默认(带有 JIT 编译器) 部分中提供的二进制包。
cd ./pypy/pypy/tool/release/ python package.py --help # for information python package.py --archive-name pypy-my-own-package-name
建议使用 package.py,因为自定义脚本很容易过时。如果您仍然想编写自定义脚本,请注意一个容易被忽略的点:一些模块是用 CFFI 编写的,需要编译。如果您以 root 身份安装 PyPy 而不预先编译它们,普通用户将会遇到错误。
PyPy 2.5.1 或更早版本:普通用户会看到权限错误。安装程序需要在安装时运行
pypy -c "import gdbm"
和其他类似命令;确切的列表在 package.py 中。如果用户看到 PyPy 安装损坏,并且拥有 sudo 权限,可以通过运行一次例如sudo pypy -c "import gdbm
来修复。PyPy 2.6 及更高版本:任何人都可能会遇到
ImportError: no module named _gdbm_cffi
。安装程序需要在安装过程中在lib_pypy
目录中运行pypy _gdbm_build.py
(以及其他命令;请参阅 package.py 中的完整列表)。如果用户看到 PyPy 安装损坏,可以通过运行pypy /path/to/lib_pypy/_gdbm_build.py
来修复。此命令会生成一个名为_gdbm_cffi.pypy-41.so
的文件,它是一个 PyPy 的 C 扩展模块。您可以将其移动到任何模块通常存放的位置,例如您的项目主目录或您添加到环境变量PYTHONPATH
的目录中。
校验和¶
下载文件的校验和 在此