Python+SWIG+MinGW - setup.py构建源代码和pyd文件,python“找不到模块”
我正在使用MinGW来构建一个Python的C模块,使用的是Swig工具。当我让Python加载这个模块时,它失败了,并且抱怨说找不到这个模块。
有趣的是,这个模块和我运行Python的目录是同一个,而且这个模块的名字是_mod.pyd
。(我还在同一个路径下生成了一个mod.py
文件,它使用了_mod.pyd
。)
这真让人感到沮丧,简直无法相信!
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "mod.py", line 25, in <module>
_mod = swig_import_helper()
File "mod.py", line 21, in swig_import_helper
_mod = imp.load_module('_mod', fp, pathname, description)
ImportError: DLL load failed: The specified module could not be found.
构建过程很顺利(我使用的是distutils),而且我的所有dll文件都放在一个已经添加到PATH环境变量中的目录里。
我使用的是Windows XP和最新稳定版的MinGW。
谢谢!
3 个回答
0
你试过这个吗:
python setup.py build --compiler=mingw32
?
0
我在MinGW网站上看到了一篇关于“如何创建Python扩展”的文章。
我知道有个技巧叫做pexports,但我试过几次,结果都不太成功(我记得的情况是这样)。有没有其他人成功做到过这个?
谢谢,
ct
更新
我还找到了一些教程 -> http://boodebr.org/main/python/build-windows-extensions
还有这个教程 -> http://www.mail-archive.com/modwsgi@googlegroups.com/msg04655.html
我觉得可能只需要运行这个命令:“setup.py build -c mingw32”就可以了。
1
这是一个常见的问题。你可能在使用Windows的Python二进制版本,这个版本是用MSC编译的,而不是用MinGW编译的。你可以通过在命令行运行Python时查看解释器的提示来确认这一点。如果确实是这样,你有两个选择:
- 用MSC编译这个模块,或者
- 用MinGW编译Python解释器。
对于第二个选项,祝你好运。我从来没有成功过。