PyPy 构建于 conda-forge
conda-forge 现在支持 PyPy3.6 作为 conda 环境中的 python 解释器
支持的平台包括:
- Linux-x86_64 (glibc 2.12 或更新版本)
- OSX-x86_64 (OSX 10.9 或更新版本)
- Linux-aarch64 (glibc 2.17 或更新版本)
- Linux-ppc64le (glibc 2.17 或更新版本)
如何使用 PyPy
要使用 PyPy 构建,您可以执行以下操作:
conda config --set channel_priority strict
conda create -n pypy pypy
conda activate pypy
如果您尚未安装 conda,可以使用 miniforge-pypy3,它为您提供由 pypy 本身驱动的 conda 安装。
然而,在撰写本文时,许多 conda 软件包无法安装到此环境中,但可以安装不依赖于 python 版本或解释器的 noarch 软件包。例如,mpmath 是一个没有任何依赖项的 noarch 软件包。
conda install mpmath # succeeds
conda install numpy # fails as of March 10, 2020
更新:截至 2020 年 4 月 10 日,numpy 和 scipy 构建已正常工作。
所有 python C 扩展都需要为 PyPy ABI 重建。目前正在进行中,可以在状态页面上跟踪。
python_abi 软件包
作为添加对 PyPy 支持的一部分,并为了保持旧版本 python 构建的正常工作,添加了 python_abi 软件包。这定义了 python 软件包的 abi,任何非 noarch python 软件包都将依赖于此软件包。像 numpy 这样的旧版本 python 下游软件包已对其元数据进行了修补,以添加 CPython ABI。您可以请求特定的 python ABI。
conda install "python_abi=*=*_cp27mu"
如果您使用的是来自 defaults 以外软件包的 python 软件包,您将能够将使用 CPython ABI 构建的 python 扩展安装到 PyPy 构建中,因为它们的元数据尚未修补。 在这种情况下,解决方案是热修复元数据,这仅适用于高流量 conda 频道,或者使用新的 python 软件包重建这些软件包并将旧软件包标记为已损坏。
使用较新的软件包将重新呈现以下要求以添加对 python_abi 的依赖项。 例如,
requirements:
host:
- python 3.6
run:
- python
呈现为,
requirements:
host:
- python 3.6.10 h9d8adfe_1009_cpython
run:
- python >=3.6,<3.7.0a0
- python_abi 3.6 *_cp36m
而,
requirements:
host:
- python 3.6 *_73_pypy
run:
- python
呈现为,
requirements:
host:
- python 3.6.9 0_73_pypy
run:
- python >=3.6,<3.7.0a0
- python_abi 3.6 *_pypy36_pp73
请注意,PyPy ABI 标签末尾带有 pp73
,这表明 ABI 仅对 PyPy3.6 7.3.x 系列稳定。
这开启了添加 python 调试版本以及使用 Python 调试 ABI 构建扩展软件包的可能性。
有关 PyPy 构建的讨论可以在问题 conda-forge/conda-forge.github.io#867 中找到。