构建使用C ++ 11功能的Python扩展的问题

时间:2015-02-20 18:06:32

标签: python windows visual-studio-2010 c++11

我正在尝试在Windows 8.1上构建一个使用C ++ 11功能的Python3.42 64位扩展模块。该模块使用gcc或clang在Linux和MacO中正确构建。

在Windows上,我安装了visual studio 2010 express和windows sdk 7.1(在VS2010 express中显然缺少x64编译器)。我已经能够构建部分扩展,但是VS2010中没有的某些C ++ 11功能存在错误。我可以修改扩展代码以避免使用这些C ++ 11功能,但是我们有更多使用C ++ 11功能的扩展,而且我是团队中唯一一个使用Windows的人...所以这不是一个可行的选择。我宁愿让它按原样构建。

所以问题是。如何使用具有更完整的C ++ 11实现的VS的编译器版本在Windows上构建python 3扩展,例如VS2012或最好是VS2013?

1 个答案:

答案 0 :(得分:1)

好吧,我会回答这个问题。

我想解决方案是使用vs2012或vs2013来构建扩展。在这种情况下,我需要使用vs2012或vs2013重建python解释器。我找到了这个页面,它解释了如何:http://p-nand-q.com/python/building-python-33-with-vs2013.html你可以从这个页面下载vs2013构建的python二进制文件。然而,遵循该路线意味着我将不得不使用vs2013构建我可能需要的每个非纯python扩展,这可能是一些因为我主要做研究而不是生产而且我不知道扩展我可能需要。构建numpy和scipy并不简单,他们似乎需要一个fortran编译器来构建它们。我想这是我想避免到达的结论,我希望有一些技巧可以避免它。

最后我选择修改代码的C ++ 11部分以便它可以用vs2010构建,但这并不好,但我想我会避免很多未来的问题。扩展我可能需要。我可以从这里下载Windows二进制文件:http://www.lfd.uci.edu/~gohlke/pythonlibs/

我想另一种解决方案是在Linux或MacO中开发。