Python 3.4: 如何在64位Windows系统上编译Cython模块

11

我有一个.pyx模块,一直在尝试通过各种方式将其编译为可在64位Windows上使用的Python 3.4版本,但一直未能成功。

经过多次尝试,最终使用以下方法进行了编译。

python setup.py build_ext --inplace --compiler=mingw32

但是当然,这在64位Python中不起作用。

使用MSVC编译器时,错误为

File "C:\Python34\lib\distutils\msvc9compiler.py", line 287, in query_vcvarsall
raise ValueError(str(list(result.keys())))
ValueError: ['path']
  • Windows 7
  • 已安装Microsoft Windows SDK for Windows 7和.NET Framework 4
  • 在C:\Program Files (x86)中似乎有一些Microsoft Visual Studio 10.0相关的东西,包括vcvarsall.bat

也欢迎不依赖于distutils的解决方案。

--- 编辑:附加信息

我现在已经修改了distutils,以识别mingw-w64,就像http://bugs.python.org/issue11723所述。然后我使用gendef和dlltool制作了libpython34.a,但是出现错误。

c:\Python34\libs/libpython34.a: file not recongnized: File truncated

运行时

python setup.py build_ext --inplace --compiler=mingw64

为什么不安装64位的mingw工具链? - MattDMo
有没有特别推荐的?就我所见,有几个选择...我已经安装了mingw-w64,但是distutils没有将其作为选项提供,所以我想可能还需要做更多的工作? - sjp
1个回答

7

好的,最终我设法让它工作了。

Christoph Gohlke提供的fantastic资源 (http://www.lfd.uci.edu/~gohlke/pythonlibs) 是关键。

  1. 以传统方式安装所需的Python版本
  2. 从Gohlke的网站上安装所需的任何扩展
  3. http://tdm-gcc.tdragon.net/download安装MinGW-w64
  4. 按照http://bugs.python.org/issue11723补丁distutils
  5. 从Gohlke的网站上安装适当版本的libpython
  6. Bob's yer uncle

(尝试各种奇怪的建议来完成此任务,我经历了更多步骤,但据我所知,这些是实际上最终产生差异的唯一步骤)


1
要将其应用于最新版本的MinGW-w64,您需要稍微更改补丁并从cygwinccompiler.py中删除所有-mno-cygwin参数,请参见:https://dev59.com/sm025IYBdhLWcg3wYFCH#6035864 - der_die_das_jojo

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接