我知道,Windows上的Python扩展通常必须使用用于编译Python本身的相同版本的Visual Studio来构build,而且我进一步意识到使用Visual Studio 2008构buildPython 2.7到3.1。但是,已经安装了VS 2013,而且正如我无数次发现的那样,快速搞乱Windows开发环境的一种方法是按照从最旧到最新的顺序安装Visual Studio。 除此之外,在一个全新的Windows 8.1上安装VS2008似乎很愚蠢。 Python扩展是我唯一需要的2008年; 如果我可以避免安装它,我真的不喜欢。
我可以避免安装VS 2008,仍然可以通过安装特定的平台SDK来构build官方的Python发行版吗? 如果没有,是否有一个可以与例如MinGW,或不需要我安装VS 2008的Python的替代版本?
我可以为您的问题提出一些可能的解决方案。 从潜在的最简单的,可能最困难的:
只需使用Visual Studio 2013来编译扩展模块。 为此,扩展模块不能访问由Python解释器创建的任何C运行时对象,也不能将它创建的任何C运行时对象传递给解释器。 特别是你不能使用Python提供的任何FILE *或文件描述符对象。 您仍然可以读写模块中的文件,而不是Python打开的文件。
卸载Visual Studio 2013,安装Visual Studio 2008,重新安装Visual Studio 2013.尽管听起来很愚蠢,但它可能会比以下任一解决方案更快,更令人沮丧。 这将使您可以正常构建扩展模块,而不必担心所使用的C运行时对象。
使用mingw32并采用各种黑客工具。 这个页面解释了一个人是如何工作的: https : //lists.launchpad.net/kicad-developers/msg09473.html
从安装在另一台机器上的VS 2008复制适当的msvcrt * .lib文件。 手动编辑链接器选项以使用此库,而不是VS 2013的同名msvcrt * .lib。 如果这不起作用,请复制包含文件和其他库,并修改编译器和链接器选项以替代使用它们。 如果仍然无效,请复制VS 2008命令行编译器及其所有依赖的DLL,正确设置PATH,然后修改您的构建过程以使用该编译器。