跳至主要内容

下载(高级)

我们为许多平台和操作系统提供预编译的二进制文件

  • 与 Python 2.7 兼容的版本 - **PyPy2.7 v7.3.16**

  • 与 Python 3.9 兼容的版本 - **PyPy3.9 v7.3.16**

  • 与 Python 3.10 兼容的版本 - **PyPy3.10 v7.3.16**

PyPy 最新版本

操作系统

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),DebianHomebrew,MacPorts,FedoraGentooArch 据悉都打包了 PyPy,但更新程度各不相同。 FreshPorts 为 FreeBSD 打包。

  • 使用 conda,这将使安装二进制编译的软件包成为可能。

  • 使用系统库和 pypy/lib_pypy/pypy_tools 中的脚本 重新编译 基于 CFFI 的 TCL/TK、OpenSSL 或 sqlite3 模块。此解决方案不会解决与 libffi 的兼容性问题,因为 libffi 已嵌入到 PyPy 中。

  • 或者 翻译 自己的 PyPy。

以前的版本可以从 这里 下载,也可以直接从 buildbot 的 镜像 下载。

如果您的 CPU 非常非常旧,它可能是没有 SSE2 的 x86-32。对于手动翻译没有 SSE2 的 PyPy 的 JIT (--jit-backend=x86-without-sse2) 存在未经测试的支持,但请注意,您的机器可能性能太低,以至于在它上面运行 CPython 首先是更好的选择。

PyPy-STM 2.5.1

这是一个特殊的 PyPy 版本!请参阅 软件事务内存 (STM) 文档。

其他版本

PyPy 的其他版本是

  • 如果您想要的功能在官方版本中太旧,请尝试最新的 夜间构建二进制文件

  • 反向调试器:此版本允许您通过在时间上前后移动来调试 Python 程序。请参阅 RevDB 文档

  • 旧式沙箱:一个特殊的安全版本。这不是 2019 年开发中宣布的版本!阅读有关 沙箱 的文档。此版本 **不受支持** 且未积极维护。您可能需要自己修复一些问题,或者签出旧版本,或者以其他方式自行尝试。我们仅出于历史原因提供此文档。请勿在生产环境中使用。作为参考,有一些非常旧的、未维护的 Linux 二进制文件 (32 位64 位)。

安装

所有二进制版本都打包在 tar.bz2zip 文件中。解压缩后,它们将在原地运行。您可以在您的主目录中的某个位置或例如 /opt 中解压缩它们。如果您愿意,可以从 /usr/local/bin/pypy 等位置到 /path/to/pypy_expanded/bin/pypy 创建一个符号链接。不要将可执行文件 pypy 移动或复制到树之外——为它创建一个符号链接,否则它将找不到它的库。

安装更多模块

使用 conda 是以最少的编译获得二进制包的最简单方法。对于具有二进制扩展的软件包,典型的 pip 工作流程要求软件包维护者为 PyPy 提供一个轮子,这对负担过重的维护者来说有时工作量太大。有关更多信息,请参阅 安装文档_

如果您使用的是发行版的 PyPy 包,我们建议您将软件包安装到虚拟环境中。如果您尝试构建一个模块,并且构建过程抱怨“缺少 Python.h”,您可能需要安装 pypy-dev 包。

从源代码构建

(查看更多构建 说明

  1. 获取源代码。首选方法是使用 git 签出当前主干。主干通常有效,并且当然是最新的

    git clone https://github.com/pypy/pypy
    

    该目录包含 PyPy 2。对于 PyPy 3,请切换到正确的分支。

    # switch to the branch that implements Python 3.10
    git checkout branches/py3.10
    

    或者,获取以下较小的包,这些包包含与上述二进制文件相同版本的源代码。

  2. 确保您已安装依赖项。请查看此处的列表 此处

  3. 进入 goal 目录

    cd pypy/pypy/goal
    
  4. 运行 rpython 脚本。以下是常见选项组合(也适用于 python 而不是 pypy;即使要构建 PyPy 3,也需要 CPython 2.7 或 PyPy 2)

    # get the JIT version
    pypy ../../rpython/bin/rpython -Ojit targetpypystandalone
    # get the no-jit version
    pypy ../../rpython/bin/rpython -O2 targetpypystandalone
    # get the sandbox version
    pypy ../../rpython/bin/rpython -O2 --sandbox targetpypystandalone
    
  5. 尽情享受 Mandelbrot :-)。翻译大约需要半小时才能完成,在 32 位系统上大约需要 3GB 内存,在 64 位系统上大约需要 5GB 内存。(不要在内存不足的机器上启动翻译!它只会一直交换。在这种情况下,请参阅下面的说明。)

  6. 如果您想以 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,甚至没有旧版本,那么您需要先构建一个,并删除一些部分。因此,首先使用以下命令进行翻译

    cpython2 rpython -Ojit targetpypystandalone \
    --withoutmod-micronumpy --withoutmod-cpyext
    

    然后将 pypy-clibpypy_c.so 复制到其他位置,最后使用 ...pypy-c ../../rpython/bin/rpython -Ojit 调用它。

    2. 即使使用 PyPy 而不是 CPython 也还不够,请尝试调整一些内部参数。示例(速度较慢,但可以节省大约 400MB 内存)

    PYPY_DONT_RUN_SUBPROCESS=1 PYPY_GC_MAX_DELTA=200MB \
    pypy --jit loop_longevity=300 ../../rpython/bin/rpython \
    -Ojit --source
    # then read the next point about --source
    
  • 您可以使用 --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 的目录中。

校验和

下载文件的校验和 在此