Python导入同目录pyd文件报ModuleNotFoundError但py文件正常
导入.pyd文件报错问题排查
核心结论:Python版本差异是导致该报错的直接原因
Windows平台下的.pyd文件是CPython专属的扩展模块文件,不同小版本的CPython之间ABI(应用程序二进制接口)不兼容,Python 3.7环境编译生成的.pyd文件无法被Python 3.8识别加载,会直接抛出模块未找到的报错。
其他可排查的辅助问题
排除版本不兼容的核心问题后,可逐一核对以下常见异常点:
- 核对
.pyd文件命名是否符合规范:CPython扩展模块默认命名格式为[模块名].cp3[版本号]-win_[架构].pyd,例如3.7版本编译的64位扩展命名应为marketPriceMarcoPolo.cp37-win_amd64.pyd,不符合该命名格式的文件不会被Python识别为可导入模块。 - 确认模块搜索路径包含目标目录:可运行以下代码打印当前Python的模块搜索路径,确认
.pyd所在目录是否在搜索范围内:
import sys print(sys.path)
若目录不在搜索路径中,可临时添加路径后再导入:
import sys sys.path.append("替换为.pyd文件所在目录的绝对路径")
- 核对编译架构匹配:如果
.pyd是32位Python编译生成的,在64位Python环境下也会无法识别,反之同理。
最优解决方案
直接在当前使用的Python 3.8环境下重新编译生成对应.pyd文件,即可解决版本不兼容导致的导入报错。
内容的提问来源于stack exchange,提问作者Zanam
相关产品推荐
相关产品推荐

