使用 PyPy 作为 PyCharm 的解释器

时间:2021-03-21 04:08:24

标签: python pycharm virtualenv pypy

概述:

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

工作 CPython 工作流程:

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

尝试 PyPy 工作流程:

我首先从下面突出显示的链接下载 PyPy 并将其解压缩到我的桌面,该链接位于 hereenter image description 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.

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

PyPy 解释器问题:

现在,在“设置”、“设置”、“项目:xx”、“Python 解释器”中,我从下拉菜单中选择了 PyPy 解释器。出现警告说我没有安装python打包工具,所以我点击了链接安装它们。他们安装了,我收到了以下软件包: enter image description here 到目前为止一切正常,所以我单击加号,搜索 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.

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

更新的尝试:

根据 jupiterbjy's answer,我尝试使用 PyPy 3.6 版本重复我的过程。当我尝试使其成为 virtualenv 环境或系统解释器时,它产生了与 3.7 相同的结果。

2 个答案:

答案 0 :(得分:1)

如果您使用 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\97\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 分支/存储库 - 但我怀疑这是否可以满足其他 numpy 依赖模块的依赖项。

答案 1 :(得分:1)

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

安装 NumPy 需要很长时间的原因是它是从源代码编译的:NumPy 目前没有为 Windows 上的 PyPy 提供二进制包(在 Python 中称为“轮子”)。它确实为 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,也许您可​​以管理。但是不要指望使用 PyPy 进行 NumPy 编程会更快,它是使用 C-API 编写的,这会降低 PyPy 的速度。

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