Python 3.x f2py无法正确导入,尽管编译成功
我正在用f2py成功地编译我的Fortran子程序。但是,将创建一个文件夹和一个pyd文件 如果我没有将创建的pyd文件放在生成的文件夹中,则会出现此错误Python 3.x f2py无法正确导入,尽管编译成功,python-3.x,fortran,f2py,Python 3.x,Fortran,F2py,我正在用f2py成功地编译我的Fortran子程序。但是,将创建一个文件夹和一个pyd文件 如果我没有将创建的pyd文件放在生成的文件夹中,则会出现此错误 ImportError:DLL加载失败:找不到指定的模块。 如果我将生成的.pyd文件放在生成的文件夹中,我的python脚本将运行,导入似乎可以工作。但是,如果我运行print(energy\u f2py.\uuu doc\uuuuuy)None是输出,当我尝试使用子例程时,我会得到一个错误AttributeError:模块“energy\
ImportError:DLL加载失败:找不到指定的模块。
如果我将生成的.pyd文件放在生成的文件夹中,我的python脚本将运行,导入似乎可以工作。但是,如果我运行print(energy\u f2py.\uuu doc\uuuuuy)
None
是输出,当我尝试使用子例程时,我会得到一个错误AttributeError:模块“energy\u f2py”没有属性“potential\u 3”
potential_3
是子例程
内部energy_f2py.f90
我还尝试过制作energy_f2py.f90
一个包含子例程的模块,结果没有任何差异
这是生成的pyd文件energy\u f2py.cp36-win\u amd64.pyd
。我正在使用Pycharm(Windows1064位)中的命令行使用
f2py-c-m energy\u f2py energy\u f2py.f90
python-mnumpy.f2py-c-m energy\u f2py energy\u f2py.f90
最后,有一个解决方案是将Python和Fortran模块命名为不同的名称。我已经试过了,但也没有什么不同。我找到的最有效的解决方案是对我的硬盘进行分区并安装Linux。我选择使用卢本图,但你可以使用任何东西
在Linux上,一切都正常工作。另一个选择是使用
-static
标志使其成为静态构建。这会将所需的所有内容构建到单个文件中:
python -m numpy.f2py -c -m energy_f2py energy_f2py.f90 -static
然后,您应该能够使用该.pyd
文件,无论您将其放置在哪个文件夹中