2010-02-14 80 views
1

我正在使用MinGW構建一個使用Swig的PythonC模塊。當我告訴Python加載模塊時,它會失敗並且抱怨Python找不到該模塊。Python + SWIG + MinGW - setup.py構建源代碼和pyd文件,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被定位在已暴露路徑的目錄。

我在Windows XP + MinGW平臺上(最新穩定的MinGW)。

謝謝!

+0

什麼是依賴關係 - 即哪些DLL被「_mod.pyd」引用? – AndiDog

+0

感謝您回覆我!我不是100%確定如何回答這個問題。你有什麼建議嗎? –

+0

我試過這樣做了好幾次,很少成功。我通常最終會拋棄毛巾,而用VC++ Express來代替。 –

回答

1

這是一個常見問題。您可能正在使用Windows版本的Python二進制版本,它與MSC一起編譯而不是MinGW。你可以從命令行看到解釋器說的內容。如果是這種情況,你有兩個選擇:

  • 編譯MSC模塊或
  • 編譯Python解釋器使用MinGW。

對於後面的選項,好吧,祝你好運。我從來沒有能夠做到這一點。

+0

我以前聽說過這類問題。非常無賴。我可能會用mingw來重新編譯python。 –

+0

用mingw重新編譯python可能是一個很大的麻煩,如果你的成功請留下評論:D – FxIII

0

我在MinGW網站的「我如何創建Python擴展?」下跑過這篇文章。

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

我知道有與pexports一招,但我很少/沒有成功測試了這一點幾次(我記得)。其他人是否能夠成功地完成工作?

歡呼聲,

CT

更新

我也發現了這個教程 - >http://boodebr.org/main/python/build-windows-extensions 本教程 - >http://www.mail-archive.com/[email protected]/msg04655.html

我認爲這可能是跑步一樣簡單:「setup.py build -c mingw32」

0

你嘗試:

蟒蛇setup.py構建--compiler = mingw32的

+0

我給了它一個旋轉,它沒有完全按照我預期的方式工作。儘管謝謝! pexports工作,事實證明有一個共享庫(dll)不在%PATH%,所以窗口「加載器」嚇壞了。 –