为啥cupy安装过程检测不到Microsoft Visual C++?

Posted

技术标签:

【中文标题】为啥cupy安装过程检测不到Microsoft Visual C++?【英文标题】:Why can't the cupy installation process detect Microsoft Visual C++?为什么cupy安装过程检测不到Microsoft Visual C++? 【发布时间】:2020-07-23 00:33:19 【问题描述】:

我目前正在尝试使用发布页面上的资产安装最新版本的 cupy (cupy-8.0.0b4.tar.gz),但是当我尝试在我的 MSI (Windows 10) 上安装模块时NVIDIA GeForce RTX 2060显卡安装CUDA Toolkit(11.0.2版)、Python 3.8、Cython和numpy包后,看到如下错误:

building 'cupy.core._carray' extension
    error: Microsoft Visual C++ 14.2 is required. Get it with "Microsoft Visual C++ Build Tools": https://visualstudio.microsoft.com/downloads/
    ----------------------------------------
ERROR: Command errored out with exit status 1: 'c:\users\mjim2\appdata\local\programs\python\python38\python.exe' -u -c 'import sys, setuptools, tokenize; sys.argv[0] = '"'"'C:\\Users\\mjim2\\AppData\\Local\\Temp\\pip-req-build-z9h9y2dz\\setup.py'"'"'; __file__='"'"'C:\\Users\\mjim2\\AppData\\Local\\Temp\\pip-req-build-z9h9y2dz\\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\mjim2\AppData\Local\Temp\pip-record-c5iitjqj\install-record.txt' --single-version-externally-managed --compile --install-headers 'c:\users\mjim2\appdata\local\programs\python\python38\Include\cupy' Check the logs for full command output.
---
Exception information:
Traceback (most recent call last):
  File "c:\users\___\appdata\local\programs\python\python38\lib\site-packages\pip\_internal\req\req_install.py", line 827, in install
    success = install_legacy(
  File "c:\users\___\appdata\local\programs\python\python38\lib\site-packages\pip\_internal\operations\install\legacy.py", line 86, in install
    raise LegacyInstallFailure
pip._internal.operations.install.legacy.LegacyInstallFailure

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "c:\users\___\appdata\local\programs\python\python38\lib\site-packages\pip\_internal\cli\base_command.py", line 188, in _main
    status = self.run(options, args)
  File "c:\users\___\appdata\local\programs\python\python38\lib\site-packages\pip\_internal\cli\req_command.py", line 185, in wrapper
    return func(self, options, args)
  File "c:\users\___\appdata\local\programs\python\python38\lib\site-packages\pip\_internal\commands\install.py", line 398, in run
    installed = install_given_reqs(
  File "c:\users\___\appdata\local\programs\python\python38\lib\site-packages\pip\_internal\req\__init__.py", line 67, in install_given_reqs
    requirement.install(
  File "c:\users\___\appdata\local\programs\python\python38\lib\site-packages\pip\_internal\req\req_install.py", line 845, in install
    six.reraise(*exc.parent)
  File "c:\users\___\appdata\local\programs\python\python38\lib\site-packages\pip\_vendor\six.py", line 703, in reraise
    raise value
  File "c:\users\___\appdata\local\programs\python\python38\lib\site-packages\pip\_internal\operations\install\legacy.py", line 74, in install
    runner(
  File "c:\users\___\appdata\local\programs\python\python38\lib\site-packages\pip\_internal\utils\subprocess.py", line 270, in runner
    call_subprocess(
  File "c:\users\___\appdata\local\programs\python\python38\lib\site-packages\pip\_internal\utils\subprocess.py", line 241, in call_subprocess
    raise InstallationError(exc_msg)

我已安装 Microsoft Visual C++ 2015-2019 Redistributable (x86) - 14.26.28720,但程序似乎无法检测到该软件。我很难破译异常的来源。我需要弄清楚如何将程序的文件夹位置硬编码到 python 代码中,或者是否还有其他问题我应该查看。如果有人可以在这里帮助我,我将不胜感激。

【问题讨论】:

PATH 变量中是否包含所有内容的路径? 我会这么认为;我的系统能够检测到 CUDA。如果 C++ 包需要作为环境变量,那么它的路径是什么? 尝试查看 Developer 命令行是否与 C++ 工具一起安装。从那里您可以找到开发人员命令行的可执行文件的路径,然后找到包含 cl.exe 的 bin 文件夹。然后将该路径添加到您的路径中。 好吧,我已经完成了,现在可以从命令行运行 cl,但我得到了上面详述的相同错误。 :( 【参考方案1】:

“Visual C++ Redistributable”是一个运行时库。如果需要从源代码构建 CuPy,则需要从错误消息中显示的 URL 安装 VC++ 编译器。

【讨论】:

我已经安装了 Visual Installer 并下载了 Visual Studio Professional、Visual Studio Community 和 Visual Studio Build Tools 2019。对于它们中的每一个,我都安装了“使用 C++ 进行桌面开发”和“C++”构建工具”,并添加了以下内容:MSVC v142 - VS 2019 C++ x64/x86 构建工具 (v14.26)、Windows 10 SDK (10.0.18362.0)、适用于 Windows 的 C++ CMake 工具、测试工具核心功能 - 构建工具、C++ AddressSanitizer (实验性)。尽管进行了这些安装,但我没有取得太大进展,我觉得我必须以某种方式明确说明参考。 究竟应该从链接下载哪个下载? 请尝试按照 Python 网站上的说明进行操作:https://wiki.python.org/moin/WindowsCompilers#Microsoft_Visual_C.2B-.2B-_14.2_standalone:_Build_Tools_for_Visual_Studio_2019_.28x86.2C_x64.2C_ARM.2C_ARM64.29 我已按照说明重新安装 Visual Build Tools 并获取所需的软件包,但仍然存在相同的错误。我通过 VS 2019 的开发人员命令提示符查找了 Arvin Kushwaha 建议的 PATH,并将其添加到我现有的 PATH 中,但没有成功。您还有其他建议吗? 尝试更新 setuptools 和 pip。 python -m pip install -U setuptools pip

以上是关于为啥cupy安装过程检测不到Microsoft Visual C++?的主要内容,如果未能解决你的问题,请参考以下文章

为啥我系统上的所有 CuPy 函数都比它们的 NumPy 对应函数慢?

Cupy说它已经实现了scipy的cg,但是安装时找不到cg(共轭梯度法)

Cupy 找不到 CUDA 存储库

Cupy结构数组下标

可以在google colab上安装cupy吗?

为啥同时使用 numba.cuda 和 CuPy 从 GPU 传输数据这么慢?