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

python - 在 distutils 中使用 F2py

我在 python 脚本中使用 fortran 程序,并尝试使用setup.py脚本构建和安装它,使用numpy.distutils. 但是,我不擅长知道如何链接各种代码文件,所以我想我会在这里问这个问题,希望有人能清楚地解释如何处理每种类型的文件。

让我解释一个假设的情况,它恰好与我自己的情况非常相似。我有两个包含一个模块的文件,每个文件都希望成为.so可在 python 中导入的文件。假设它们是read.f90(包含模块read)和analyse.f90(包含模块analyse)这两个模块都使用在另一个文件中定义的子例程,subs.f90我不断添加和更新。该模块analyse还依赖于produce文件中的另一个模块produce.f90,我可能会在开始时对其进行调整,但基本上我很可能会让它在此之后。此外,analyse还依赖于外部库libfoo.a

完成这项工作有两层 - 首先,f90 文件中的useandinclude语句必须正确。其次,setup.py文件中的 Extension 配置必须正确。到目前为止,我知道如何让外部库工作 - 在模块analyse中 putuse foo和 setup.py 中的 Extension 函数中,使用关键字

但是,对于其余部分,我不确定。我有一些工作,但它似乎不是最佳方式。其他部分根本不工作。我只是想知道是否有人可以清楚地解释该怎么做?

0 投票
0 回答
163 浏览

python - 将 f2py 扩展名导入为“import mymod.foo”

我从 Fortran 文件创建了一个 Python 模块:

file1.f90包含 Fortran 模块:foo, bar, bar. 模块foo包含函数:f, g, h.

f2py 自动为 function 编写文档字符串f

mymod.so包含在目录ROOT中,我已经添加ROOT到我的PYTHONPATH.

我可以通过以下方式访问f函数的文档字符串:

我现在想f使用 sphinx 的 autodoc 扩展为函数编写文档:

但它失败了:

我认为 sphinx 正试图像这样导入,但它不起作用:

我试图导入一个包含__init__.py.

我怎样才能让 sphinx 找到mymod.foo.fdocstring?

0 投票
1 回答
1534 浏览

python - Numpy distutils 如何

我花了将近一个小时在谷歌上搜索解决方案,但 numpy.distutils 的文档非常稀少。

我有一个 f2py 包装的模块。它基本上由3个文件组成:

该模块使用以下 shell-script 命令编译得很好。

结果,我有了 python 模块 a.so(名称在 .pyf 文件中指定)。

我如何使用 numpy.distutils (或其他一些面向 python 的构建工具)来做到这一点?一个不太重要的问题是,我是否还可以包含对 lib.a 的依赖(并在必要时重建它?)

0 投票
1 回答
653 浏览

python - f2py 中的 malloc 错误

我正在尝试使用 f2py 在 3 维中运行一个简单的集成问题。

调用fortran代码的python代码如下:

虽然 fortran 子例程有点长,但它的重要部分是开始......

最后...

子程序顶部的注释(第 5-11 行)是存在于 fortran 模块中的结构mod_gvars。似乎一切都按计划进行*直到*此子例程返回。这是输出:

似乎子程序只有在返回时才会遇到问题。为什么会发生这种情况?

0 投票
1 回答
4682 浏览

python - f2py:与 python 交互时在 fortran 中指定真正的精度?

我正在玩 f2py。我对 numpy 内在类型与 fortran 90 类型有点困惑。在与 python 交互时,似乎我只能在 fortran 90 中使用单精度实数。让我用一个例子来说明:

假设我有这个 fortran 90 模块 test.f90,要用 f2py 编译并在 python 中导入:

我这样编译:

f2py -c -m 测试 test.f90

然后,在python中:

IOW,似乎 f2py 不接受双精度。当从 python 向 fortran 90 子例程传递输入时,这变得更加成问题。假设我将模块扩展到:

f2py -c -m 测试 test.f90

Python

-1.15948430791165406E+155

因此,似乎从 python 发送的任何输入变量都必须声明为单精度。这是 f2py 的已知问题吗?

此外,作为后续问题:从 sp 转换为 dp 工作,在以下意义上:

但我想知道这是否是特定于编译器的?我可以期望上述子例程对任何架构上的任何编译器都做正确的事情吗?测试时,我在上述所有示例中都使用了 gfortran。

0 投票
2 回答
486 浏览

python - 数组排序的 f2py 速度

我在 fortran ( f2py) 中编写了一些代码,以便获得一些速度,因为在纯 Python 中进行大量计算会非常麻烦。

我想知道在 Python 中设置 NumPy 数组是否order=Fortran会降低主要 Python 代码相对于经典 C 样式顺序的速度。

0 投票
3 回答
13200 浏览

python - 在红帽上安装 SciPy

我正在尝试在 Red Hat Enterprise Linux Server 6.3 版上安装 SciPy 包。然而,它失败了。

我使用的 Python 版本是 2.6,但它似乎需要 2.4。是否有其他与 2.6 兼容的 SciPy 版本?如果需要 2.4,关于如何获得它的任何建议?我按照python 网页上的说明进行操作,但它们似乎已经过时了。它还需要 f2py,我不确定如何获得。

有什么更容易安装的建议吗?我一直按照这里的说明进行操作。

谢谢!

0 投票
1 回答
1439 浏览

python - 在python中调用fortran代码时如何处理全局变量(例如使用f2py)?

我想用 python 运行一些 fortran 代码,并为此使用f2py -c -m。但是,似乎只有FUNCTION被打包到.so文件中,而不是PROGRAM。那我该如何处理全局变量呢?例如,将变量c放入模块中

, 在 PROGRAM 中修改,并由同一文件中的 FUNCTION 隐式使用

如何调用让函数y(x)知道python中c的值?

0 投票
1 回答
1022 浏览

function - f2py 子程序调用 fortran 函数

是否可以编写一个调用另一个 Fortran 函数的 Fortran 函数的 Fortran f2py 子例程?例如:

对不起,混乱。我试过了,但是编译时出错了……我需要从 Python 调用的唯一子程序是第一个子程序,在此先感谢。

0 投票
3 回答
797 浏览

python - 结交 python 和 fortran 朋友

假设我们需要在 python 程序中调用 fortran 函数,该函数返回一些值。我发现以这种方式重写fortran代码:

并以这种方式在python中调用它:

给我们工作结果。我可以用其他方式调用fortran函数吗,因为我认为第一种方式有点笨拙?