我可以在Windows *上开发Python 2.7到3.1的C扩展而无需安装Visual Studio 2008吗?

时间:2014-07-12 00:01:00

标签: python windows python-c-extension

我知道Windows上的Python扩展通常必须使用与编译Python本身相同的Visual Studio版本构建,并且我还意识到Python 2.7到3.1是使用Visual Studio构建的但是我所安装的机器已经安装了VS 2013,并且,正如我已经无数次发现的那样,快速搞砸Windows开发环境的一种方法是以任何顺序安装Visual Studio而不是最旧的到最新的。除此之外,在全新的Windows 8.1机器上安装VS2008似乎很傻。 Python扩展是我需要的唯一的东西2008;如果我可以避免安装它,我真的不愿意。

我可以避免安装VS 2008并且仍然可以通过安装特定的Platform SDK来构建官方Python发行版吗?如果没有,是否有一个替代版本的Python可能与例如MinGW,还是不需要我安装VS 2008的东西?

1 个答案:

答案 0 :(得分:4)

我可以为您的问题建议一些可能的解决方案。从最简单的,可能是最难的:

  1. 只需使用Visual Studio 2013编译扩展模块即可。为此,扩展模块不能访问由Python解释器创建的任何C运行时对象,也不能将它创建的任何C运行时对象传递给解释器。特别是,您不能使用Python提供的任何FILE *或文件描述符对象。您仍然可以读取和写入模块中的文件,而不是Python已打开的文件。

  2. 卸载Visual Studio 2013,安装Visual Studio 2008,重新安装Visual Studio 2013.听起来很愚蠢,它可能会比以下任何一种解决方案更快,更少令人沮丧。这将使您可以非常正常地构建扩展模块,并且您不必担心您使用的C运行时对象。

  3. 使用mingw32并使用各种黑客来使其工作。此页面说明了一个人如何使用它:https://lists.launchpad.net/kicad-developers/msg09473.html

  4. 从另一台计算机上安装的VS 2008复制相应的msvcrt * .lib文件。手动编辑链接器选项以使用此库而不是VS 2013的同名msvcrt * .lib。如果这不起作用,请复制包含文件和其他库,并修改编译器和链接器选项以使用它们。如果仍然无效,请复制VS 2008命令行编译器及其所有相关DLL,正确设置PATH,然后修改构建过程以使用该编译器。