问题标签 [f2py]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
1466 浏览

python - 使用 f2py 时,fortran 模块中的函数范围与为 fortran 程序编译时不同?

我的问题是使用 f2py 编译时,模块中定义的函数无法识别某些模块变量。在声明传递给函数的变量类型的参数(例如描述类型的变量real或维度元素)时会引发错误。使用 gfortran 编译时我没有收到此错误。使用 f2py 编译时有什么区别以及如何纠正这些错误?

我的示例文件moddata.f90包含以下代码:

我编译

我得到这些错误:

如果我integer, parameter :: nelem=3之前重新定义integer, dimension(nelem), intent(in) :: y并重新编译,我会得到

每个real(kind=dp)声明都有相同的错误,并且

所以我必须在函数中重新定义dpby 。integer, parameter :: dp = selected_real_kind(15)然后它就起作用了。

当我使用 fortran 包装器编译此模块时,我没有收到这些错误。我想知道为什么nelemdp在函数中没有正确限定 f2py 的范围?

0 投票
4 回答
795 浏览

python - 为什么 Fortran 中的单变量 Horner 比 NumPy 对应的更快,而双变量 Horner 不是

我想在 Python 中执行多项式微积分。里面的polynomial包裹numpy对我来说不够快。因此,我决定在 Fortran 中重写几个函数,并使用f2py它来创建可以轻松导入 Python 的共享库。目前,我正在将我的单变量和双变量多项式评估例程与他们的numpy同行进行基准测试。

在单变量例程中,我使用霍纳的方法numpy.polynomial.polynomial.polyvalnumpy我观察到,随着多项式阶数的增加,Fortran 例程比对应例程快的因素也在增加。

在双变量例程中,我两次使用霍纳的方法。首先在 y 中,然后在 x 中。不幸的是,我观察到,对于增加多项式阶数,numpy对应物会赶上并最终超过我的 Fortran 例程。由于numpy.polynomial.polynomial.polyval2d使用类似于我的方法,我认为第二个观察结果很奇怪。

我希望这个结果源于我对 Fortran 和f2py. 可能有人知道为什么单变量例程总是显得优越,而双变量例程只对低阶多项式更优越?

编辑 这是我最新更新的代码、基准脚本和性能图:

多项式.f95

benchmark.py(使用此脚本生成绘图)

结果 在此处输入图像描述 在此处输入图像描述 在此处输入图像描述

编辑对steabert提案的更正

编辑测试代码以验证直接上面的代码对于 x > 1 的结果是否很差

0 投票
1 回答
993 浏览

python - f2py 不适用于树冠

我对python比较陌生。我在工作中使用 Enthought Canopy。从导入f2pynumpy,我在尝试执行时继续遇到无效的语法错误:

不用说,我已经gfortran安装了,并且该程序存在于工作目录中。甚至试图奔跑

正如网上某处推荐的那样,会导致错误提示:name 'c' is not defined。在输入 f2py 时:

这表明已安装 f2py。谁能知道我哪里出错了?

0 投票
1 回答
781 浏览

python - 将fortran文件导入python

这是一个非常新手的问题,但是在谷歌搜索了一段时间后,我一直无法找到解决方案。我正在使用 Eclipse(在 Linux Mint 中)编写 Python 代码,它需要一些用 Fortran 77 编写的例程(代码位于名为 的文件中fortran_code.f)。我已经习惯f2py了获取文件fortran_code.so。此文件与 Python 代码 ( ) 位于同一文件夹中../workspace/python_project/src。Python 代码仅包括:

再一次,结果是:

Fortran 子程序代码为:

要获取 .so 文件(fortran_code.so),我使用:

f2py的版本是2,Python的版本是2.7.4

解决此问题的任何帮助都将非常有用。

谢谢!

0 投票
1 回答
2766 浏览

python - 为 WinPython 设置 python 路径以使用 f2py

我在我的 Windows 7 副本上安装了 Winpython 发行版。从它复制到的文件夹中启动 iPython 控制台和发行版中的其他项目工作正常。

我想使用 numpy 的 f2py 模块来从 Python 调用 Fortran 子例程。我的理解是 f2py 必须从命令行调用,但是系统似乎没有找到 f2py,ImportError: no module named site当我调用它时返回,无论是否带有标志。当我尝试从命令行运行 python 本身时,也会返回同样的错误。

当我手动导航到 Winpython 目录(例如C:\Users\AGK\WinPython-32bit-2.7.5.3\python-2.7.5)并调用 f2py -c --help-fcompiler以查看是否在那里找到 f2py 时,我收到以下错误

有人可以向我解释这个错误的含义和/或如何将 f2py 与 Winpython 一起使用吗?谢谢!

0 投票
2 回答
1162 浏览

python - f2py:找不到可执行文件 C:Python27pythonw.exe 可执行文件 C:Python27pythonw.exe 不存在

我正在尝试使用numpy.f2py如下所述运行一个简单的 Fortran 子例程:http: //docs.scipy.org/doc/numpy/user/c-info.python-as-glue.html#calling-f2py-from-python

当我尝试f2py.compile(source, modulename='add')从 python 编译 () 时,出现以下错误:

寻找这个文件,我发现C:\Python27\pythonw.exe我的系统中确实存在,那么路径可能有问题吗?

无论如何,关于如何使我的代码工作的任何建议?

0 投票
2 回答
1007 浏览

python - 用 numpy 和测试套件打包

介绍

免责声明:我对使用 distutils 进行 python 打包非常陌生。到目前为止,我只是将所有内容都隐藏到模块中,并手动打包并在此基础上进行开发。我以前从未写过setup.py文件。

我有一个 Fortran 模块,我想在我的 python 代码中使用 numpy。我认为最好的方法是 f2py,因为它包含在 numpy. 为了自动化构建过程,我想使用 distutils 和相应的 numpy 增强功能,其中包括 f2py 包装器的便利功能。

我不明白我应该如何组织我的文件,以及如何包含我的测试套件。

我想要的是./setup.py用于构建、安装、测试和开发的可能性。

我的目录结构如下所示:

setup.py文件包含以下内容:

运行后./setup.py build我得到。

其中既不包括__init__.py文件,也不包括测试。

问题

  • 是否真的有必要将路径添加到扩展的每个源文件?(即volterra/integral.f90)我不能给一个参数说,在里面寻找东西volterra/吗?,top_pathpackage_dir参数没有起到作用。
  • 目前,该__init__.py文件不包含在构建中。这是为什么?
  • 如何在此设置中运行我的测试?
  • 在这样的环境中进行开发的最佳工作流程是什么?我不想为我所做的每一次更改都安装我的包。当需要编译一些扩展模块时,如何在源码目录下进行开发?
0 投票
2 回答
4090 浏览

python-2.7 - f2py 与英特尔 Fortran 编译器

我正在尝试使用 f2py 将我的 python 程序与我的 Fortran 模块接口。

我在Win7平台上。

我使用最新的 Anaconda 64 (1.7) 作为 Python+NumPy 堆栈。

我的 Fortran 编译器是最新的 Intel Fortran 编译器 64(版本 14.0.0.103 Build 20130728)。

我在执行时遇到了许多问题f2py -c -m PyModule FortranModule.f90 --fcompiler=intelvem

最后一个,我似乎无法解决的是,看起来 f2py/distutils 传递给编译器的标志序列与 ifort 期望的不匹配。

调用 ifort 时,我收到一系列有关未知选项的警告消息。

我怀疑这与我最后从链接器得到的错误有关

它以一个简单的结尾

我的猜测是,这是因为选项序列中缺少 /link 标志。因此,/l /L 选项不会传递给链接器,编译器认为这些选项是针对他的。

f2py 生成的 ifort 命令如下所示:

我不知道为什么“-dll”重复了两次(我不得不从原来的“-shared”更改那个标志)。

现在,我尝试查看 f2py 和 distutils 代码,但还没有弄清楚如何在命令输出中添加额外的 /link 。我什至无法找到生成此输出的位置。

如果有人过去遇到过这个问题和/或可能有一些建议,我将非常感激。

感谢您的时间

0 投票
1 回答
161 浏览

python - f2py 停止命令的同义词

我有一个在需要时从 python 调用的 fortran 代码。有时在 fortran 计算中会产生错误,并使用命令 STOP 进行处理,该命令会完全停止 fortran 和 python 代码。但是,我需要 python 才能继续运行。是否有任何其他命令停止 fortran 代码不会影响 python?

0 投票
1 回答
1092 浏览

python - f2py 使用模块 - 签名文件

我创建了使用模块 dimpar 的签名文件。当我尝试使用签名文件进行编译时,f2py 无法识别 msects 和 maxpar,结果我得到:

我如何让 f2py 了解这些参数来自模块?

谢谢

签名文件

模块 dimpar

这是一些复制问题的示例代码:

dimpar.f90

数组.f90

编译后我运行: