python 3.6的C ++编译器支持C ++ 11(MinGW和MSVC)(也是cl.exe致命错误)

时间:2017-12-22 09:12:46

标签: python c++11 gcc visual-c++ compiler-errors

我试图从setup.py安装python包。 实际上这一个:https://github.com/facebookresearch/fastText 我使用python 3.6(anaconda,内置于Visual Studio 2017)

我有Visual Studio 2017并安装MinGW:

C:\MinGW\bin>gcc --version
gcc (MinGW.org GCC-6.3.0-1) 6.3.0

然后我用:

python setup.py install

并获取下一条错误消息:

  

错误:'线程'不是' std'

的成员

我发现这意味着我需要使用C ++ 11功能。好。但是怎么样? 我试图在我的python目录中更改文件distutils.cfg以使用下一个编译器:

mingw32
msvc

但是对于msvc又出现了另一个错误:

  

错误C2039:' to_string':不是' std'

的成员

我找到了一些信息,要添加-std=c++11来使用某些c ++ 11功能,但我无法理解在何处以及如何使用它!我需要在安装后在python shell中编写吗?或者在distutils.cfg?我试过了两个并得到了:

  

错误:选项-s无法识别---> for python

     

错误:不知道如何在平台上编译C / C ++代码' nt'同   ' msvc -std = c ++ 11'编译器---> for distutils.cfg

1 个答案:

答案 0 :(得分:0)

很多时间以后,我找到了解决方案。 问题是我没有正确安装MSVC,并且(重要)没有将其添加到PATH变量中。 所以正确的排序:

  1. 使用Visual Studio安装程序安装下一个工具(您可以在此处获得免费版本:microsoft_official):
    • MSBuild
    • 基本组件Visual Studio C ++
    • VC ++ 2017版本15.9 v14.16最新的v141工具
    • 用于CMake的Visual C ++工具
    • C ++ / CLI支持
    • 适用于Windows 10(10.0.17134.0)的SDK
    • 用于CMake和Linux的Visual C ++工具
    • 用于VC ++ 2017 15.4 / 15.6的工具箱v14.13和14.11 这里有一点困难:有时程序包的名称因Visual Studio Installer的版本而异,并且我具有非英语版本,因此我手动翻译了它们的名称。也许您不需要所有这些,但是这套工具对我有用。
  2. 现在您已经有了MSVC编译器,我们需要告诉python使用它:将cl.exe路径添加到Windows中的PATH变量中(通常它位于此处): C:\Program Files (x86)\Microsoft Visual Studio\2017\Professional\Common7\IDE\CommonExtensions\Microsoft\CMake\CMake\bin

这解决了使用Windows时大量Python软件包的问题。但是您需要为此安装大型应用程序(几个GB)。