问题标签 [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 投票
2 回答
647 浏览

python - 来自 Fortran 的回调 Python

现在我正在使用f2py从 Fortran 代码调用 Python 函数。我尝试了一个非常简单的示例,但没有成功。

Fortran90 代码:

使用命令行:

f2py -c -m 回调 callback.f90

Python代码:

错误:

0 投票
0 回答
208 浏览

python - 使用 f2py 构建 Photran 项目

我正在尝试设置 Photran 以使用 f2py 构建我的 Fortran 项目,以便能够从 Python 调用我的 Fortran 函数(在 PyDev 中,作为记录)。我试图设置一个外部构建器,但这不起作用:

这失败并出现错误error: unknown file type '' (from 'D:\workspace\FortranTDDexample')

我怀疑这不是最好的方法,并且构建配置更合适(我对此很陌生)。

所以我的问题是:

1) 是否有人记录了 Photran 和 f2py 的工作设置?

2)有没有办法让我的外部构建器(上面)工作?

0 投票
0 回答
261 浏览

numpy - f2py:在 Windows 中的 numpy 中缺少 limit.h 文件

我在使用 f2py 和 g77 编译器编译一些 FortranIV 代码时遇到问题。我需要这样做才能将一些用 Fortran 编写的非常古老的代码调用到已经存在的 Python 模块中。我通过 MinGW 安装了 gcc,但我不确定这是否有任何区别。我也在运行带有 Numpy 1.7 和 SciPy 0.12 的 Python 2.7。我的操作系统是 Windows7 x64,但我确保我所有的安装都是 32 位版本。我是 Python、Fortran 和这个论坛的新手,所以请多多包涵。使用 f2py 编译代码时出现的错误如下:

为了隔离问题,我使用了与 gfortran 编译器兼容的测试代码。我使用 '-c –compiler 调用所需的编译器。该测试与您的基本“Hello World”在同一行。对于真实代码和测试代码,抛出的错误是相同的。我查找了错误的文件“npy_common.h”,发现第 291 行调用包含标题:limits.h。由于错误发生在 Numpy 库中,我假设错误与 Numpy 相关?我似乎无法弄清楚为什么会发生此错误。

0 投票
1 回答
686 浏览

python - 使用 f2py 将文本字符串从 fortran 子例程返回到 python

我在 Fortran 中得到了这个简单的模块:

测试.f90

编译它(在 Windows 上)gfortran test.f90 -o test.exe并运行它,正如预期的那样:

我也可以使用 f2py 编译它:c:\Python27\python.exe c:\Python27\Scripts\f2py.py --fcompiler=gnu95 --compiler=mingw32 -c -m test \test.f90

当我运行这个 Python 脚本时:

测试.py

我得到以下输出:

如您所见,应为“foo”的字符串为空。为什么是这样?

0 投票
1 回答
2202 浏览

python - f2py,将 Python 函数传递给 Fortran 的问题

我有一个简单的 Fortran 代码(stack.f90):

我正在编译使用:

然后使用这个 Python 脚本 ( stack.py) 进行测试:

当我使用"python stack.py"它运行时:

我的问题是:

  • 为什么没有正确评估函数?

  • 如何返回resultPython?

  • 是否可以xs在 Fortran 中一次评估数组?

谢谢!


编辑:借助@SethMMorton 的精彩提示,我得出了以下结论:

运行stack.py此命令已修改:ans = fortran_sum(func,xs); 给出:

这是错误的。x=x(I)如果我添加中间变量并使用此变量调用函数,则不会发生这种奇怪的行为f(x)。有趣的是,如果我调用f(x)一次,所需的调用f(x(I))也有效。应用此“修复”后:

然后编译运行,得到正确的结果:

如果有人能解释为什么会很好?

0 投票
2 回答
3318 浏览

python - f2py,返回数组的 Python 函数(向量值函数)

在下面的 Python 中,我有五个函数包含在返回的数组中func,我必须集成这些函数。代码调用使用生成的外部 Fortran 模块f2py

Fortran 例程是:

问题是 Fortran 仅将第一个函数集成到func(x). 查看打印结果:

一种解决方法是修改func(x)以返回函数数组中给定位置的值:

然后更改 Fortran 例程以使用两个参数调用该函数:

哪个有效:

但是这里func被调用了5次以上(实际情况下func 有300个以上的函数,所以会被调用300次以上)。

  • 有谁知道更好的解决方案让 Fortran 识别返回的所有数组func(x)?换句话说,将 Fortran 构建fx1 = f(x1)为一个包含 5 个元素的数组,这些元素对应于func(x).

OBS:我正在编译使用f2py -c --compiler=mingw32 -m trapzdv trapzdv.f90

0 投票
0 回答
327 浏览

python - 在 Mac OS 10.8 上使用 f2py/gfortran 包装 32 位库

我需要在 Python 中包装一个 Fortran 库,并且它需要是 32 位的,因为我使用的是 32 位 EPD。为此,我使用了从 fink 安装的 EPD 和 gcc 4.8 附带的 f2py。我发出以下命令:

输出在底部。请注意“文件是为 i386 构建的,它不是被链接的体系结构 (x86_64)”最后的警告。那么我做错了什么,我该如何解决这个问题?

0 投票
2 回答
1156 浏览

python - 使用 f2py 在 (Fortran) 模块错误中停止 python 代码?

我正在使用 Fortran 创建一个 Python 模块f2py。如果在 Fortran 模块中遇到错误,我想在 Python 程序中产生错误(包括错误消息)。考虑以下示例:

Fortran 代码(test.f):

这个非常简单的程序添加1a. a(i)但如果等于 0,应该会产生错误。随附的 Python 代码:

现在的输出是:

我希望 Python 程序保留错误。请帮忙。

回答

stopFortran 中的命令正是这样做的。考虑更新的 Fortran 代码:

现在的输出是:

即 Python 代码在出错后不会继续。

0 投票
2 回答
2364 浏览

python - 从 python 调用 LAPACK 驱动程序/函数

我需要在 python 中使用 lapack 函数 'DGGLSE' 来解决带有约束的最小二乘问题。

我发现 lapack 的一些低级功能可以在 scipy 中找到,如下所示 http://docs.scipy.org/doc/scipy/reference/linalg.lapack.html 但我感兴趣的没有包括在内,似乎大多数无论如何,lapack 的驱动程序代码不包括在内。

我想知道我是否有办法做到这一点。谢谢。-严

0 投票
1 回答
247 浏览

python - f2py 与不同版本的 Fortran 和 CPython 的性能是否不同

Fortran 有多个版本(66、77、90、95、2003、2008),CPython 有两个版本(2.x 和 3.x)。

从用户体验来看,我想知道在特定版本中编写 Fortran 源代码时 f2py 是否更快、内存效率更高或健壮。

其次,f2py 是否支持 Python 3.x,如果支持,它对 2.x 或 3.x 性能更好吗?