在Mac上使用Python 2.7.3导入.pyd(使用SWIG创建)

问题描述:

我在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路径中。

这是因为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

我曾经有一个不同的原因相同的错误:我已建立从源模块,除了我假定“.pyd”是一个通用的扩展(可能是一个DLL或ELF共享对象),所以我告诉gcc创建“mymodule.pyd”而不是“mymodule.so”:在Linux和Windows上,文件的内容在编译后都是正确的,但名称仅在Windows上有效。

在Linux上,一个简单的mv mymodule.pyd mymodule.so解决了它。