2012-08-08 122 views
3

我在Windows下創建了一個名爲(_example.pyd)的SWIG下的.pyd文件。在Mac上使用Python 2.7.3導入.pyd(使用SWIG創建)

我能夠將文件發送到我的郵箱,並使用Python的相同版本(2.7.3的Python),這個簡單的命令另一臺Windows計算機導入:

.>>> import _example 

.>>> 

但是,當我把它到我的電子郵件,並試圖用Mac導入文件,我得到:

"No module named _example" 

任何想法?

在這兩種情況下,我都將文件保存到Python路徑中。

回答

3

這是因爲Python擴展(.pyd文件)本質上是DLL。
如果你想在Mac上使用你的擴展,你需要在Mac上編譯/。

http://docs.python.org/faq/windows.html#is-a-pyd-file-the-same-as-a-dll

+0

哦不!是否有與Windows .pyd文件相同的Mac?我花了很長時間瞭解如何通過Windows上的SWIG創建C/C++擴展,所以如果我可以在Mac上爲Windows創建擴展,那就太棒了。 – user1449530 2012-08-08 17:05:42

+0

@ user1449530 MacOS具有.so或.dll文件的.dynlib文件。你會想要建立其中一個。 – Flexo 2012-08-08 20:09:54

0

我曾經有一個不同的原因相同的錯誤:我已建立從源模塊,除了我假定「.pyd」是一個通用的擴展(可能是一個DLL或ELF共享對象),所以我告訴gcc創建「mymodule.pyd」而不是「mymodule.so」:在Linux和Windows上,文件的內容在編譯後都是正確的,但名稱僅在Windows上有效。

在Linux上,一個簡單的mv mymodule.pyd mymodule.so解決了它。