在 Mac 上的 Python 2.7.3 中导入 .pyd(使用 SWIG 创建)
Posted
技术标签:
【中文标题】在 Mac 上的 Python 2.7.3 中导入 .pyd(使用 SWIG 创建)【英文标题】:Importing a .pyd (created with SWIG) in Python 2.7.3 on Mac 【发布时间】:2012-08-08 14:07:36 【问题描述】:我在 Windows 下使用 SWIG 创建了一个名为 (_example.pyd) 的 .pyd 文件。
我可以通过这个简单的命令将文件发送到我的电子邮件并使用相同版本的 Python (Python 2.7.3) 将其导入另一台 Windows 机器:
.>>> import _example
.>>>
但是当我将它发送到我的电子邮件并尝试使用 Mac 导入文件时,我得到:
"No module named _example"
有什么想法吗?
在这两种情况下,我都将文件保存到 Python 路径中。
【问题讨论】:
【参考方案1】:这是因为 Python 扩展(.pyd 文件)本质上是 DLL。 如果你想在 Mac 上使用你的扩展,你需要为/在 Mac 上编译它。
http://docs.python.org/faq/windows.html#is-a-pyd-file-the-same-as-a-dll
【讨论】:
哦不! Windows .pyd 文件是否有 Mac 等效项?我花了很长时间了解如何在 Windows 上通过 SWIG 创建 C/C++ 扩展,所以如果我可以在 Windows 上为 Mac 创建一个扩展,那就太好了。 @user1449530 MacOS 具有类似于 .so 或 .dll 文件的 .dynlib 文件。你会想要构建其中的一个。【参考方案2】:我曾经因为不同的原因遇到同样的错误:我从源代码构建了模块,除了我假设 ".pyd" 是一个通用扩展(无论是 DLL 还是共享的 ELF object),所以我告诉 gcc 创建“mymodule.pyd”而不是“mymodule.so”:在 Linux 和 Windows 上,文件的内容在编译后是正确的,但名称仅在 Windows 上有效。
在 Linux 上,一个简单的mv mymodule.pyd mymodule.so
解决了它。
【讨论】:
以上是关于在 Mac 上的 Python 2.7.3 中导入 .pyd(使用 SWIG 创建)的主要内容,如果未能解决你的问题,请参考以下文章
python 使用Mac在Pandas(Python)中导入Excel文件
在 Mac OS Lion 上安装 oursql 成功,但在 python 中导入失败。 **为啥?**
在 Ubuntu 上的 python 中导入 OOSheet 时出错