我已经通过f2py
从一些fortran代码构建了一个.pyd模块,我们可以调用foo.pyd
。我想将它导入python代码,我们可以调用main.py
。当我导入为:
import foo
一切正常。但是,因为这个python最终将被“冻结”为可执行文件,并且我必须将foo.pyd
和main.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
命令!
有没有人经历过这个,和/或可能有一些指导?我非常感谢您提供的任何帮助或建议。
答案 0 :(得分:1)
imp.load_compiled()
适用于.pyc
个文件。您正在寻找imp.load_dynamic()
。或者,您可以在sys.path
中添加所需的目录,然后常规导入将起作用。