Python 使用PyPy作为PyCharm的解释器 概述:

Python 使用PyPy作为PyCharm的解释器 概述:,python,pycharm,virtualenv,pypy,Python,Pycharm,Virtualenv,Pypy,我有一个包含两个现有VirtualEnvironment的项目。一个使用CPython 3.7,另一个使用CPython 3.8。我想添加另一个使用PyPy的解释器。目前,我已经将Python 3.8指定为我的PATH Python可执行文件。我正在Windows 10上运行PyCharm Professional 2020.3 工作流程: 我进入“设置”、“项目:xx”、“Python解释器”。然后,在下拉菜单下,我选择了“全部显示”。然后我单击加号,在“VirtualEnvironment”

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

工作流程: 我进入“设置”、“项目:xx”、“Python解释器”。然后,在下拉菜单下,我选择了“全部显示”。然后我单击加号,在“VirtualEnvironment”下,在项目目录中为“Location”列出了一个新的文件夹名,并导航到我的一个python可执行文件中的“Base解释器”。然后我点击“OK”,PyCharm为我创建了一个新的Virtualenv

尝试的PyPy工作流: 我首先从下面突出显示的链接下载了PyPy并将其解压缩到我的桌面上。 然后,我将提取的文件夹复制到我的
C:\\Users\xx\AppData\Local\Programs\
文件夹中,因此它与我的其他Python解释器位于同一位置。然后,我尝试复制CPython工作流来建立一个pypyvirtualenv环境。这失败了,因为在最后一步之后,Python生成以下错误消息:

Error: Command '['C:\\Users\\xx\\Documents\\GitHub\\xx\\venvTest\\Scripts\\pypy3.exe', '-Im', 'ensurepip', '--upgrade', '--default-pip']' returned non-zero exit status 2.
我不理解这个错误,所以我环顾四周,找到了指向文档的链接。似乎PyPy只能用作带有PyCharm的系统解释器。所以,我试着去“设置”、“项目:xx”、“Python解释器”。然后,在下拉菜单下,我选择了“全部显示”。然后我单击加号,在“系统解释器”下,我导航到“解释器”的“pypy3.exe”文件。然后我点击“OK”,PyCharm为我创建了一个新的解释器

PyPy解释器问题: 现在,在“设置”、“设置”、“项目:xx”、“Python解释器”中,我从下拉菜单中选择了PyPy解释器。出现了一个警告,说我没有安装python打包工具,所以我单击了链接来安装它们。他们安装了,我收到了以下软件包: 到目前为止一切正常,所以我单击加号,搜索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版本重复我的过程。当我尝试将其作为VirtualEnvironment或系统解释器时,它产生了与3.7相同的结果。

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

pypy3 -m pip install numpy
C:\pypy3.6-v7.3.3>pypy3-mpinstallnumpy
收集钱币
下载numpy-1.19.5.zip(7.3MB)
|################################|7.3 MB 6.4 MB/s
正在安装生成依赖项。。。完成
获取构建轮子的需求。。。完成
正在准备控制盘元数据。。。完成
为收集的包构建轮子:numpy
numpy的建筑车轮(PEP 517)。。。完成
为numpy创建的控制盘:filename=numpy-1.19.5-pp36-pypy36_pp73-win32.whl size=4511302 sha256=7a7b77a0d820f96200eec66e1bc8e8e05c61bf2591689ad6fdcb
2a002b265176
存储在以下目录中:c:\users\jupiterbjy\appdata\local\pip\cache\wheels\97\ac\fc\FBF42C6CD047A8F16C5DBA0480027D4E566F8CA8A34E79AD6
成功构建numpy
安装收集的软件包:numpy
警告:脚本f2py.exe安装在“C:\pypy3.6-v7.3.3\Scripts”中,该脚本不在路径上。
考虑将此目录添加到PATH中,或者,如果您希望禁止此警告,请使用“没有警告脚本”位置。
已成功安装numpy-1.19.5
我也没有通过任何方式安装Py3.7,因为3.7仍在开发中,它是基于3.6的,它可能不像您所期望的那样兼容


如果必须使用3.7,您可能需要检查其他与pypy兼容的官方numpy分支/repo,但我怀疑这是否能满足其他依赖于numpy的模块的依赖性。

作为pypy发布管理者,我不同意@jupiterbjy。请使用PyPy3.7,3.6版本正在逐步淘汰

安装NumPy花费了很长时间的原因是它是从源代码处编译的:NumPy目前没有为windows上的PyPy提供二进制软件包(在Python中称为“轮子”)。它确实为Linux提供了它们

在windows上将NumPy与32位PyPy结合使用的最佳选择是从手动安装预编译的控制盘。为此,您应该安装numpy‑1.20.1+mkl‑pp37‑py37_pp73‑win32.whl,它是为py3.7构建的

如果NumPy是你所需要的,也许你能应付。但是不要期望使用PyPy进行NumPy编程会更快,它是使用C-API编写的,这会减慢PyPy的速度


我们有更好的生态系统支持,如果您通过WSL使用Windows内部Linux支持,您会发现大多数二进制软件包都受支持,而不需要编译它们。

为了测试这一点,我使用了新的pypy3.6和3.7,它们分别位于C:drive内部,因为正如您所提到的,venv无论如何都无法工作。您能否更详细地解释您的第二次尝试,例如,您是单击“+”进行安装还是使用了命令、文件夹位置等?@jupiterbjy-Sure!我还使用了新的PyPy下载。我把它们放在我的桌面上,而不是我的C:驱动器上,但我不认为这会有什么不同。我不知道如何使用该命令安装NumPy,所以我单击了“+”。当我尝试运行:pypy3-mpinstallnumpy时,我得到一个“pypy3不是一个可识别的命令”错误。我该如何着手解决这个问题?另外,你知道为什么PyPy不能在virtualenv中工作吗?这将是理想的解决方案。请确保移动到Py3.exe文件所在的位置!由于pypy3.exe未列在PATH环境变量中,您无法直接调用pypy3,因此必须使用
cd
命令移动到PATH环境变量中的目录中