【发布时间】:2020-09-20 18:19:46
【问题描述】:
有没有办法使用 MinGW 代替 MS Visual C++?很多 Python 包需要安装 VS C++:4.5 GB 的磁盘空间! MinGW 仅占用 450 MB 并达到编译 C/C++ 的相同目标。
我正在使用 Visual Studio Code,我尽量避免安装 Microsoft Visual C++ (此处建议在 3) 下 --> 您也可以只安装 C++ 构建工具:https://code.visualstudio.com/docs/cpp/config-msvc/#_prerequisites
也许只是需要一个技巧来用MinGW模仿MS Visual C++,让Python包直接找到MinGW编译器,就好像它是MS Visual C++? 也许将符号链接添加到 lib 目录并添加一些系统变量路径?
我的问题与Microsoft Visual C++ 14.0 is required (Unable to find vcvarsall.bat)密切相关
我在安装一个需要MS Visual C++为例的包时遇到的错误,安装pip install dtaidistance:
creating build\temp.win-amd64-3.7\Release\dtaidistance
C:\Program Files (x86)\Microsoft Visual Studio\2019\BuildTools\VC\Tools\MSVC\14.26.28801\bin\HostX86\x64\cl.exe /c /nologo /Ox /W3 /GL /DNDEBUG /MD -IC:\Users\Admin\Anaconda3\lib\site-packages\numpy\core\include -IC:\Users\Admin\Anaconda3\include -IC:\Users\Admin\Anaconda3\include "-IC:\Program Files (x86)\Microsoft Visual Studio\2019\BuildTools\VC\Tools\MSVC\14.26.28801\include" /Tcdtaidistance/dtw_c.c /Fobuild\temp.win-amd64-3.7\Release\dtaidistance/dtw_c.obj /openmp /Ox /fp:fast /favor:INTEL64 /Og
cl : Befehlszeile warning D9035 : Die Option "Og" ist veraltet und wird in einer der n„chsten Versionen entfernt.
dtw_c.c
C:\Users\Admin\Anaconda3\include\pyconfig.h(59): fatal error C1083: Datei (Include) kann nicht ge”ffnet werden: "io.h": No such file or directory
error: command 'C:\\Program Files (x86)\\Microsoft Visual Studio\\2019\\BuildTools\\VC\\Tools\\MSVC\\14.26.28801\\bin\\HostX86\\x64\\cl.exe' failed with exit status 2
----------------------------------------
ERROR: Failed building wheel for dtaidistance
Running setup.py clean for dtaidistance
Failed to build dtaidistance
Installing collected packages: dtaidistance
Running setup.py install for dtaidistance ... error
ERROR: Command errored out with exit status 1:
command: 'C:\Users\Admin\Anaconda3\python.exe' -u -c 'import sys, setuptools, tokenize; sys.argv[0] = '"'"'C:\\Users\\Admin\\AppData\\Local\\Temp\\pip-install-5lb8uekg\\dtaidistance\\setup.py'"'"'; __file__='"'"'C:\\Users\\Admin\\AppData\\Local\\Temp\\pip-install-5lb8uekg\\dtaidistance\\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\Admin\AppData\Local\Temp\pip-record-dzfe2cwr\install-record.txt' --single-version-externally-managed --compile
cwd: C:\Users\Admin\AppData\Local\Temp\pip-install-5lb8uekg\dtaidistance\
仅安装 MSVC (1.8 GB) 之后 - 仅作为测试,看看这是否已经是我所需要的:
我们看到安装仍然失败,但是错误略有变化,至少ERROR: Failed building wheel for dtaidistance现在已经消失了,看下面的截图:
creating build\temp.win-amd64-3.7\Release\dtaidistance
C:\Program Files (x86)\Microsoft Visual Studio\2019\BuildTools\VC\Tools\MSVC\14.26.28801\bin\HostX86\x64\cl.exe /c /nologo /Ox /W3 /GL /DNDEBUG /MD -IC:\Users\Admin\Anaconda3\lib\site-packages\numpy\core\include -IC:\Users\Admin\Anaconda3\include -IC:\Users\Admin\Anaconda3\include "-IC:\Program Files (x86)\Microsoft Visual Studio\2019\BuildTools\VC\Tools\MSVC\14.26.28801\include" /Tcdtaidistance/dtw_c.c /Fobuild\temp.win-amd64-3.7\Release\dtaidistance/dtw_c.obj /openmp /Ox /fp:fast /favor:INTEL64 /Og
cl : Befehlszeile warning D9035 : Die Option "Og" ist veraltet und wird in einer der n„chsten Versionen entfernt.
dtw_c.c
C:\Users\Admin\Anaconda3\include\pyconfig.h(59): fatal error C1083: Datei (Include) kann nicht ge”ffnet werden: "io.h": No such file or directory
error: command 'C:\\Program Files (x86)\\Microsoft Visual Studio\\2019\\BuildTools\\VC\\Tools\\MSVC\\14.26.28801\\bin\\HostX86\\x64\\cl.exe' failed with exit status 2
----------------------------------------
ERROR: Command errored out with exit status 1: 'C:\Users\Admin\Anaconda3\python.exe' -u -c 'import sys, setuptools, tokenize; sys.argv[0] = '"'"'C:\\Users\\Admin\\AppData\\Local\\Temp\\pip-install-jr44cxi8\\dtaidistance\\setup.py'"'"'; __file__='"'"'C:\\Users\\Admin\\AppData\\Local\\Temp\\pip-install-jr44cxi8\\dtaidistance\\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\Admin\AppData\Local\Temp\pip-record-t_8xl3_a\install-record.txt' --single-version-externally-managed --compile Check the logs for full command output.
在上面MS Visual++的截图中MSVC复选框正下方安装了其他4个复选框后,我可以安装包了。
也许将python设置中某处分配的C:\\Program Files (x86)\\Microsoft Visual Studio\\2019\\BuildTools\\VC\\Tools\\MSVC\\14.26.28801\\bin\\HostX86\\x64\\cl.exe更改为MinGW gcc编译器C:\Program Files (x86)\mingw-w64\i686-8.1.0-posix-dwarf-rt_v6-rev0\mingw32\bin\c++.exe可能已经解决了?
【问题讨论】:
-
GCC 和 MSVC 的 C++ ABI(甚至可能是头文件)只是不兼容。使用 Clang 可能会有一些运气,但我不保证任何事情。 /// 如果您担心磁盘空间,您可以尝试安装必需品,然后剥离与 Python 包无关的部分。甚至可能有一种方法可以制作出可移植的 MSVC 工具链,但不要分发它(我相信许可证中不允许这样做)。
-
我在 Visual Studio Code Survey 上给出了我想要改进的反馈:为 Python 包运行提供轻量级的 Visual C++,或者提供可以使用 Clang、MinGW 或其他编译器而不是其他编译器的设置视觉 C++。不太可能有人会关心它,因为它是 Visual C++ 问题而不是 Visual Studio Code 问题。现在每个人都有足够的磁盘空间。我仍然尝试节省磁盘空间,我主要使用 64GB 的上网本。除了磁盘空间之外,同时安装 MinGW 和 Visual C++ 并不好。至少我现在已经尝试过,反馈很少。
-
我已在github.com/microsoft/vscode-cpptools/issues/5695 上使用此 SO 问题的副本打开此问题
标签: python-3.x windows visual-c++ visual-studio-code mingw