使用 PyPy 作为解释器 PyCharm

Using PyPy as an Interpreter with PyCharm

概述:

我有一个包含两个现有 Virtualenv 环境的项目。一种使用 CPython 3.7,一种使用 CPython 3.8。我想添加另一个使用 PyPy 的解释器。目前,我将 Python 3.8 指定为我的 PATH python 可执行文件。我是 运行 PyCharm Professional 2020.3 Windows 10.

工作 CPython 工作流程:

我转到“设置”、“项目:xx”、“Python 解释器”。然后,在下拉菜单下,我选择了“显示全部”。然后我单击加号,在“Virtualenv Environment”下为“Location”列出了项目目录中的新文件夹名称,并导航到“Base Interpreter”的我的 python 可执行文件之一。然后单击“确定”,PyCharm 为我创建了一个新的 Virtualenv。

尝试的 PyPy 工作流程:

我首先从下面突出显示的 link 下载 PyPy 并将其解压缩到我的桌面,找到 here 然后我将提取的文件夹复制到我的 C:\Users\xx\AppData\Local\Programs\ 文件夹,这样它就和我的其他 Python 解释器在同一个地方。然后,我尝试复制 CPython 工作流程来设置 PyPy Virtualenv 环境。这失败了,因为在最后一步之后,Python 生成以下错误消息:

Error: Command '['C:\Users\xx\Documents\GitHub\xx\venvTest\Scripts\pypy3.exe', '-Im', 'ensurepip', '--upgrade', '--default-pip']' returned non-zero exit status 2.

我不明白这个错误,所以我环顾四周,发现 link 属于文档。似乎 PyPy 只能用作 PyCharm 的系统解释器。因此,我尝试转到“设置”、“项目:xx”、“Python 解释器”。然后,在下拉菜单下,我选择了“显示全部”。然后我单击加号,在“系统解释器”下,导航到“解释器”的“pypy3.exe”文件。然后我点击“确定”,PyCharm 为我创建了一个新的解释器。

PyPy 解释器问题:

现在,在“设置”、“设置”、“项目:xx”、“Python 解释器”中,我从下拉菜单中选择了 PyPy 解释器。出现警告说我没有安装 python 打包工具,所以我单击 link 来安装它们。他们安装后,我收到了以下软件包: 到目前为止一切正常,所以我单击加号,搜索 NumPy,并尝试安装它。然后,PyCharm 开始安装它,我注意到这需要很长时间。瞧,大约 15 分钟后,安装失败并出现以下错误:

ERROR: Command errored out with exit status 1: 'C:\Users\xx\AppData\Local\Programs\pypy3.7-v7.3.3-win32\pypy3.exe' -u -c 'import sys, setuptools, tokenize; sys.argv[0] = '"'"'C:\Users\xx\AppData\Local\Temp\pip-install-wx4cbjwv\numpy_bf6ea1d419434c2e9caea46adf58b45c\setup.py'"'"'; __file__='"'"'C:\Users\xx\AppData\Local\Temp\pip-install-wx4cbjwv\numpy_bf6ea1d419434c2e9caea46adf58b45c\setup.py'"'"';f=getattr(tokenize, '"'"'open'"'"', open)(__file__);code=f.read().replace('"'"'\r\n'"'"', '"'"'\n'"'"');f.close();exec(compile(code, __file__, '"'"'exec'"'"'))' install --record 'C:\Users\xx\AppData\Local\Temp\pip-record-y9bh74bh\install-record.txt' --single-version-externally-managed --compile --install-headers 'C:\Users\xx\AppData\Local\Programs\pypy3.7-v7.3.3-win32\include\numpy' Check the logs for full command output.

我不知道如何解释这个命令,我不知道如何继续。

更新的尝试:

根据 ,我尝试使用 PyPy 3.6 版重复我的过程。当我试图将它变成 virtualenv 环境或系统解释器时,它产生了与 3.7 相同的结果。

如果您使用 pypy3.7,请尝试使用 pypy3.6,直接从您使用的任何终端使用 pip 模块。

pypy3 -m pip install numpy
C:\pypy3.6-v7.3.3>pypy3 -m pip install numpy
Collecting numpy
  Downloading numpy-1.19.5.zip (7.3 MB)
     |################################| 7.3 MB 6.4 MB/s
  Installing build dependencies ... done
  Getting requirements to build wheel ... done
    Preparing wheel metadata ... done
Building wheels for collected packages: numpy
  Building wheel for numpy (PEP 517) ... done
  Created wheel for numpy: filename=numpy-1.19.5-pp36-pypy36_pp73-win32.whl size=4511302 sha256=7a7b77a0d820f96200eec66e1bc8e8e05c61bf2591689ad6fdcb
2a002b265176
  Stored in directory: c:\users\jupiterbjy\appdata\local\pip\cache\wheels\ac\fc\fbf42c6cd047a8f16c5dba00480027d4e566f8ca8a34e79ad6
Successfully built numpy
Installing collected packages: numpy
  WARNING: The script f2py.exe is installed in 'C:\pypy3.6-v7.3.3\Scripts' which is not on PATH.
  Consider adding this directory to PATH or, if you prefer to suppress this warning, use --no-warn-script-location.
Successfully installed numpy-1.19.5

我也无法通过任何方式安装 pypy3.7 - 由于 3.7 仍在开发中,它基于 3.6,它可能不像你想的那样兼容期待。

如果必须使用 3.7,您可能需要查看此 official docs 以了解其他与 pypy 官方兼容的 numpy branches/repos - 但我怀疑这是否可以满足其他依赖 numpy 的依赖项模块。

作为 PyPy 发布经理,我不同意@jupiterbjy。请使用PyPy 3.7,3.6版本即将淘汰

安装 NumPy 花费很长时间的原因是它是从源代码编译的:NumPy 目前不为 PyPy 在 windows。它确实有 Linux.

在 windows 上将 NumPy 与 32 位 PyPy 一起使用的最佳选择是手动安装来自 https://www.lfd.uci.edu/~gohlke/pythonlibs/#numpy 的预编译轮。为此,您应该安装 numpy‑1.20.1+mkl‑pp37‑pypy37_pp73‑win32.whl,这是为 PyPy3.7 构建的。

如果您只需要 NumPy,也许您可​​以管理。但是不要指望 NumPy 编程比 PyPy 更快,它是使用 C-API 编写的,这会减慢 PyPy 的速度。

我们从 conda and linux 获得了更好的生态系统支持,如果您通过 WSL 使用 Windows 内部 Linux 支持,您会发现大多数二进制包都受支持,不需要编译它们。