我可以在不安装Visual Studio 2008的情况下在Windows *上开发Python 2.7到3.1的C扩展



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

我可以避免安装VS 2008,仍然构建针对官方的Python发行版,也许通过安装一个特定的平台SDK?如果没有,是否有一个Python的替代版本,例如MinGW,或者不需要我安装VS 2008的东西?

我可以为你的问题提出一些可能的解决方案。从可能最简单的到可能最难的:

  1. 使用Visual Studio 2013编译扩展模块。要做到这一点,你的扩展模块不能访问Python解释器创建的任何C运行时对象,也不能将它创建的任何C运行时对象传递给解释器。特别是不能使用Python提供的任何FILE *或文件描述符对象。你仍然可以读写模块中的文件,只是不能读取Python打开的文件。

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

  3. 使用mingw32并使用各种hack使其工作。这个页面解释了一个人是如何让它工作的:https://lists.launchpad.net/kicad-developers/msg09473.html

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

最新更新