从显式路径导入 f2py .pyd(Bad magic number ImportError)

Importing a f2py .pyd from an explicit path (Bad magic number ImportError)

我通过 f2py 从一些 Fortran 代码构建了一个 .pyd 模块,我们可以称之为 foo.pyd。我想将其导入 python 代码,我们可以将其称为 main.py。当我导入为:

import foo

一切正常。但是,因为这个 python 最终会 'frozen' 成一个可执行文件,而且我必须将 foo.pydmain.exe 一起打包,所以我需要指定一个 [=36] =]显式 从中导入的路径。

因此,我尝试使用 imp 模块,特别是 imp.load_compiled()。当我尝试时:

import imp
foo = imp.load_compiled('foo','foo.pyd')

甚至:

foo = imp.load_compiled('foo','./foo.pyd')

我收到以下错误:

ImportError: Bad magic number in foo.pyd

这个错误似乎是由于试图构建一个 Python 分区,然后导入另一个分区。但是,我对两者使用相同的 Python, 并且它适用于标准 import 命令!

有没有人遇到过这种情况,and/or 可能有一些指导?非常感谢您提供的任何帮助或建议。

imp.load_compiled() 用于 .pyc 个文件。您正在寻找 imp.load_dynamic()。或者,您可以在 sys.path 中添加您想要的目录,之后常规导入将起作用。