Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/fortran/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 3.x f2py无法正确导入,尽管编译成功_Python 3.x_Fortran_F2py - Fatal编程技术网

Python 3.x f2py无法正确导入,尽管编译成功

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\

我正在用f2py成功地编译我的Fortran子程序。但是,将创建一个文件夹和一个pyd文件

如果我没有将创建的pyd文件放在生成的文件夹中,则会出现此错误

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

  • 同样的事情也会发生

    在我看来,创建pyd文件和文件夹都很奇怪,请参见下图

    我被困在这一点上。。。这似乎是95%的工作方式


    最后,有一个解决方案是将Python和Fortran模块命名为不同的名称。我已经试过了,但也没有什么不同。

    我找到的最有效的解决方案是对我的硬盘进行分区并安装Linux。我选择使用卢本图,但你可以使用任何东西


    在Linux上,一切都正常工作。

    另一个选择是使用
    -static
    标志使其成为静态构建。这会将所需的所有内容构建到单个文件中:

    python -m numpy.f2py -c -m energy_f2py energy_f2py.f90 -static
    
    然后,您应该能够使用该
    .pyd
    文件,无论您将其放置在哪个文件夹中