1. pyd
(Windows)
-
本质上是一个
.dll
文件- Windows 平台上,
.pyd
文件是基于DLL
(动态链接库)格式的 Python 共享库。 - 你可以直接把
.pyd
文件改名为.dll
,但 Python 只会识别.pyd
作为扩展模块。
- Windows 平台上,
-
依赖
pythonXX.dll
.pyd
文件通常依赖 Python 解释器对应的pythonXX.dll
(如 Python 3.10 需要python310.dll
)。- 如果
pythonXX.dll
缺失或版本不匹配,可能会导致ImportError
。
- 在MacOS中,需要重新编译为.so才可以使用
2 .so
(Linux/macOS)
-
本质上是 ELF(Executable and Linkable Format)共享库
- 在 Linux/macOS 上,Python 扩展模块是
.so
文件,本质是一个shared object
(共享对象)。
- 在 Linux/macOS 上,Python 扩展模块是
-
依赖
libpythonX.Y.so
- 类似 Windows 的
pythonXX.dll
,在 Linux/macOS 上,.so
文件通常依赖libpythonX.Y.so
(如 Python 3.9 需要libpython3.9.so
)。
- 类似 Windows 的
3. 主要区别对比
特性 | .pyd (Windows) | .so (Linux/macOS) |
---|---|---|
文件类型 | Windows DLL | ELF 共享库 |
依赖库 | pythonXX.dll | libpythonX.Y.so |
编译工具 | MSVC 或 MinGW | gcc / clang |
命名方式 | mymodule.pyd | mymodule.so |
加载方式 | import mymodule (Windows) | import mymodule (Linux/macOS) |