【问题标题】:Python+SWIG+MinGW - setup.py builds the source and the pyd file, python "cannot find the module"Python+SWIG+MinGW - setup.py 构建源码和pyd文件,python“找不到模块”
【发布时间】:2010-02-14 19:04:44
【问题描述】:

我正在使用 MinGW 使用 Swig 构建 PythonC 模块。当我告诉 Python 加载模块时,它失败并抱怨 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 平台(最新的稳定版 MinGW)。

谢谢!

【问题讨论】:

  • 依赖关系是什么 - 即“_mod.pyd”引用了哪些 DLL?
  • 感谢您回来找我!我不是 100% 确定如何回答这个问题。你有什么诀窍吗?
  • 我已经尝试过多次,但很少成功。我通常只是认输,改用 VC++ Express。

标签: python mingw swig


【解决方案1】:

这是一个常见问题。您可能正在使用 Python for Windows 的二进制版本,它是用 MSC 而不是用 MinGW 编译的。当您从命令行运行它时,您可以看到它查看解释器所说的内容。如果是这种情况,您有两种选择:

  • 用 MSC 或
  • 编译模块
  • 用 MinGW 编译 python 解释器。

对于后一种选择,好吧,祝你好运。我从来没有这样做过。

【讨论】:

  • 我以前听说过这种类型的问题。真是太可惜了。我可能会用 mingw 重新编译 python。
  • 用mingw重新编译python可能会很痛苦,如果你能成功请留言:D
【解决方案2】:

我在 MinGW 网站上的“如何创建 Python 扩展?”下看到了这篇文章

http://www.mingw.org/wiki/FAQ

我知道 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”

【讨论】:

    【解决方案3】:

    你试过了吗:

    python setup.py build --compiler=mingw32

    ?

    【讨论】:

    • 我试了一下,结果并没有达到我的预期。不过谢谢! pexports 工作,结果发现有一个不在 %PATH% 中的共享库 (dll),所以 Windows“加载器”吓坏了。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-02-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多