如何让PyPy识别线性代数(英特尔MKL,OpenBLAS)库?环境变量有问题吗?

时间:2019-05-15 17:43:26

标签: c++ numpy pypy

我安装了可以正常工作的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) 即:

  1. 更新的设置工具pypy3 -m pip install --upgrade setuptools
  2. 安装了该问题注释中提到的各种Microsoft Visual Studio /构建工具。
  3. 试图使用仅二进制选项安装numpy pypy3 -m pip install --only-binary :all:numpy
  4. 尝试通过VS命令提示符更新setuptools并安装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时设置环境变量。

这确实改变了我的错误信息,但只会使它变得更糟/更长。另外,当我在命令提示符下键入pythonpypy3时,我得到以下信息:

https://imgur.com/a/QvD3n4j

根据这篇帖子What is the difference between these two lines, MSC v.1900 64 bit (AMD64) and MSC v.1914 32 bit (Intel),哪个显示我已经安装了C ++编译器?

我的问题是:

  1. 环境变量的名称(“ VS140COMNTOOLS”)是否重要?我认为它适用于VisualStudio14,但“价值”指向VisualStudio19。
  2. 使用SYSTEMVARIABLE而不是USER VARIABLE指向编译器是否正确?
  3. 如果我需要Microsoft Visual C ++ 14.1,是否/应该所有较新的版本都可行?
  4. 我的环境变量实际上指向正确的目录吗?这样的目录中需要什么才能使PyPy识别C ++编译器?
  5. 为什么我必须输入pypy3 -m pip install <Package>?而不是pypy3 pip install <Package>只会导致“ FilenotFoundError”?
  6. 如何让PyPy识别编译器并正确安装numpy或pandas?

编辑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?,因为找不到相应的环境变量:Environmental Variables 我使用set VS140COMNTOOLS=C:\Program Files (x86)\Microsoft Visual Studio\2019\BuildTools\VC\Auxiliary\Build"进行了设置,并尝试了pypy3 -m pip install numpypypy3 -m pip install numpy -v。不幸的是,那也不能解决问题,错误消息仍然是:enter image description here,后来又说没有安装Microsoft Visual C ++ 14.1。

错误消息指出它在我的PyPy / libs文件夹中找不到多个库。谁知道我需要安装什么才能找到这些库?

@mattip 在我的情况下,速度实际上并不重要,因为我实际上并不使用numpy进行计算。但是,我使用pandas进行数据存储,这需要首先安装numpy。

在虚拟环境中安装PyPy更容易,还是在那里遇到相同的问题?

1 个答案:

答案 0 :(得分:1)

在运行PyPy时收到的提示指示使用哪个编译器生成,而不是找到哪个编译器。即使PyPy可以找到它正在寻找的编译器,在Windows上本地构建NumPy也会导致NumPy的版本变慢。 NumPy确实需要像OpenBLAS或Intel的MKL这样的线性代数后端,而要安装这些代数很棘手。现在您的问题:

  1. 您可以启动32位编译器的Visual Studio命令行,然后在该DOS窗口中运行PyPy,我很确定NumPy会生成(但是结果比vnedor提供的二进制文件要慢)。

  2. 最终结果完全相同。 SystemVariable将为所有用户设置,仅为您设置UserVariable。

  3. 可能是。我没有2019,只有2017。

  4. PyPy像常规CPython一样使用setuptools和distutils提供的服务。因此,答案与您为CPython找到的答案相同。

  5. -m的意思是“加载此模块”,因此您正在加载pip 模块并运行其代码。如果没有-m,您将运行名为pip文件,该文件在您的路径上不存在

  6. 前进的道路是使PyPy成为python世界中的一流公民。请敦促项目本身(熊猫,numpy,scipy ...)为PyPy提供轮子,并要求Anaconda提供PyPy变体。