Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/138.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/image-processing/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 如何让PyPy识别线性代数(intelmkl、OpenBLAS)库?环境变量问题?_C++_Numpy_Pypy - Fatal编程技术网

C++ 如何让PyPy识别线性代数(intelmkl、OpenBLAS)库?环境变量问题?

C++ 如何让PyPy识别线性代数(intelmkl、OpenBLAS)库?环境变量问题?,c++,numpy,pypy,C++,Numpy,Pypy,我已经安装了一个运行中的Python3.6版本,并想尝试PyPy的启发式算法。我使用以下指南安装了PyPy:并使其运行,还通过以下方式安装了openpyxl模块:pypy3-m pip安装openpyxl 但是,在尝试安装numpy或pandas时,我收到以下错误消息: 错误:微软Visual C++ 14.1是必需的。用微软Visual C++的构建工具得到:“ 我尝试了以下所有解决方案: 即: 更新的Setuptoolspypy3-m pip安装--升级Setuptools 安装了该问题评论

我已经安装了一个运行中的Python3.6版本,并想尝试PyPy的启发式算法。我使用以下指南安装了PyPy:并使其运行,还通过以下方式安装了openpyxl模块:
pypy3-m pip安装openpyxl

但是,在尝试安装numpy或pandas时,我收到以下错误消息:

错误:微软Visual C++ 14.1是必需的。用微软Visual C++的构建工具得到:“

我尝试了以下所有解决方案: 即:

  • 更新的Setuptools
    pypy3-m pip安装--升级Setuptools
  • 安装了该问题评论中提到的各种Microsoft Visual Studio/Build工具
  • 尝试使用仅二进制文件选项安装numpy
    pypy3-mpp安装——仅二进制:all:numpy
  • 尝试从VS命令提示符更新setuptools并安装numpy
  • 所有这些对我都不起作用。我想到的最好的办法是它可能与环境变量有关。在PyPy doc()中,它说:

    安装将设置VS140COMNTOOLS环境变量,这是distutils/setuptools查找编译器的关键

    我在Systemvariables或Uservariables中找不到此变量。 因此,我尝试使用name=VS140COMNTOOLS和Value=C:\Program Files(x86)创建一个新的SYSTEMVARIABLE\Microsoft Visual Studio \2019\BuildTools\Common7\Tools。这是我的计算机上VsDevCmd.bat所在的路径,我认为它负责在安装Microsoft Visual Studio期间设置环境变量

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

    !

    根据这个帖子,我有安装了C++编译器吗? 我的问题是:

  • 环境变量(“VS140COMNTOOLS”)的名称是否重要?我假设它适用于VisualStudio14,但该值会导致VisualStudio19
  • 使用系统变量而不是用户变量来指向编译器是否正确
  • 如果我需要微软Visual C++ 14.1,所有的新版本是否都是可行的?< /LI>
  • 是我的环境变量实际上指向正确的目录吗?在这样的目录中需要什么使PyPy识别C++编译器?< /LI>
  • 为什么我必须键入
    pypy3-m pip-install
    ?而不是只会导致“FilenotFoundError”的
    pypy3-pip-install
  • 如何让PyPy识别编译器并正确安装numpy或pandas
  • 编辑1

    使用“针对VS 2019的x86本机工具命令提示符”并尝试
    pypy3-m pip install numpy
    不起作用。我还发现了这个问题,因为我找不到相应的环境变量: 我使用
    set VS140COMNTOOLS=C:\Program Files(x86)\Microsoft Visual Studio\2019\BuildTools\VC\Auxiliary\Build“
    设置它,并尝试了以下两种方法:
    pypypy3-m pip install numpy
    pypy3-m pip install numpy-v
    。遗憾的是,这还没有解决这个问题,错误信息仍然是:稍后说没有安装微软Visual C++ 14.1。 错误消息指出在我的PyPy/libs文件夹中找不到几个库。有人知道我需要安装什么才能找到这些库吗?

    @马蒂普 在我的例子中,速度并不重要,因为我实际上不使用numpy进行计算。但是,我使用pandas进行数据存储,这需要首先安装numpy


    在虚拟环境中安装PyPy更容易,还是我会面临同样的问题?

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

  • 您可以为32位编译器启动visualstudio命令行,然后在DOS窗口中运行PyPy,我很确定NumPy将生成(但结果将比vnedor提供的二进制程序慢)

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

  • 是的,可能。我没有2019年,只有2017年

  • PyPy使用setuptools和distutils提供的服务,就像常规的CPython一样。所以这个问题的答案和你为CPython找到的答案是一样的

  • -m
    表示“加载此模块”,因此您正在加载pip模块并运行其代码。如果没有
    -m
    ,您将运行一个名为
    pip
    文件,该文件在您的路径上不存在

  • 前进的道路是使PyPy成为python世界的一等公民。请敦促项目本身(pandas、numpy、scipy…)为PyPy提供轮子,并要求Anaconda提供PyPy变体


  • 谢谢你的建议!遗憾的是,使用VS2019的32位命令行并没有解决这个问题。我更新了上面的问题,似乎在PyPy/libs文件夹中缺少一些库。你知道该安装什么吗?看来我缺少的库正是你提到的线性algebrea后端。我真的需要OpenBLAS和MKL吗?我怎样才能让PyPy识别这些?遵循这个指南会有帮助吗?因为我猜我已经安装了其中一个库,所以我只需要让PyPy识别它们