我安装了可以正常工作的Python 3.6版本,并想尝试PyPy的启发式算法。我使用以下指南安装了PyPy:How to use PyPy on Windows?,并使其运行并安装例如通过以下方式打开openpyxl模块:pypy3 -m pip install openpyxl
但是,当尝试安装numpy或pandas时,出现以下错误消息:
“错误:需要Microsoft Visual C ++ 14.1。使用Microsoft Visual C ++生成工具获取它”:https://visualstudio.microsoft.com/downloads/”
我尝试了以下所有解决方案:Microsoft Visual C++ 14.0 is required (Unable to find vcvarsall.bat) 即:
pypy3 -m pip install --upgrade setuptools
pypy3 -m pip install --only-binary :all:numpy
这些都不适合我。我想到的最好的办法是,它可能与环境变量有关。在PyPy文档(http://doc.pypy.org/en/latest/windows.html)中显示:
“安装将设置VS140COMNTOOLS环境变量,这是distutils / setuptools查找编译器的关键”
我在Systemvariables或Uservariables中找不到此变量。 所以我尝试制作一个新的 SYSTEMVARIABLE ,名称为 VS140COMNTOOLS ,值= C:\ Program Files(x86)\ Microsoft Visual Studio \ 2019 \ BuildTools \ Common7 \工具。这就是我的计算机上 VsDevCmd.bat 所在的路径,我认为该路径负责在安装Microsoft Visual Studio时设置环境变量。
这确实改变了我的错误信息,但只会使它变得更糟/更长。另外,当我在命令提示符下键入python
或pypy3
时,我得到以下信息:
根据这篇帖子What is the difference between these two lines, MSC v.1900 64 bit (AMD64) and MSC v.1914 32 bit (Intel),哪个显示我已经安装了C ++编译器?
我的问题是:
pypy3 -m pip install <Package>
?而不是pypy3 pip install <Package>
只会导致“ FilenotFoundError”?编辑1
使用“ VS 2019的x86本机工具命令提示符” 并尝试pypy3 -m pip install numpy
无效。我也找到了这个问题how can I install numpy on pypy on my 64 bit computer running Windows 64 bit?,因为找不到相应的环境变量:
我使用set VS140COMNTOOLS=C:\Program Files (x86)\Microsoft Visual Studio\2019\BuildTools\VC\Auxiliary\Build"
进行了设置,并尝试了pypy3 -m pip install numpy
和pypy3 -m pip install numpy -v
。不幸的是,那也不能解决问题,错误消息仍然是:,后来又说没有安装Microsoft Visual C ++ 14.1。
错误消息指出它在我的PyPy / libs文件夹中找不到多个库。谁知道我需要安装什么才能找到这些库?
@mattip 在我的情况下,速度实际上并不重要,因为我实际上并不使用numpy进行计算。但是,我使用pandas进行数据存储,这需要首先安装numpy。
在虚拟环境中安装PyPy更容易,还是在那里遇到相同的问题?
答案 0 :(得分:1)
在运行PyPy时收到的提示指示使用哪个编译器生成,而不是找到哪个编译器。即使PyPy可以找到它正在寻找的编译器,在Windows上本地构建NumPy也会导致NumPy的版本变慢。 NumPy确实需要像OpenBLAS或Intel的MKL这样的线性代数后端,而要安装这些代数很棘手。现在您的问题:
您可以启动32位编译器的Visual Studio命令行,然后在该DOS窗口中运行PyPy,我很确定NumPy会生成(但是结果比vnedor提供的二进制文件要慢)。
最终结果完全相同。 SystemVariable将为所有用户设置,仅为您设置UserVariable。
可能是。我没有2019,只有2017。
PyPy像常规CPython一样使用setuptools和distutils提供的服务。因此,答案与您为CPython找到的答案相同。
-m
的意思是“加载此模块”,因此您正在加载pip 模块并运行其代码。如果没有-m
,您将运行名为pip
的文件,该文件在您的路径上不存在
前进的道路是使PyPy成为python世界中的一流公民。请敦促项目本身(熊猫,numpy,scipy ...)为PyPy提供轮子,并要求Anaconda提供PyPy变体。