从显式路径导入f2py .pyd(错误幻数ImportError)

时间:2015-05-04 21:44:39

标签: python f2py

我已经通过f2py从一些fortran代码构建了一个.pyd模块,我们可以调用foo.pyd。我想将它导入python代码,我们可以调用main.py。当我导入为:

import foo
一切正常。但是,因为这个python最终将被“冻结”为可执行文件,并且我必须将foo.pydmain.exe一起打包,我需要指定一个显式路径从...导入。

因此,我尝试使用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 dist,并导入另一个。但是,我对两者使用相同的Python,并且它适用于标准的import命令!

有没有人经历过这个,和/或可能有一些指导?我非常感谢您提供的任何帮助或建议。

1 个答案:

答案 0 :(得分:1)

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