问题标签 [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.
python - f2py 不喜欢子程序中的显式形状数组
我正在尝试使用f2py
. 该代码使用 ifort 编译得很好,但在使用 f2py 时会抛出错误。这是代码(它超过两个文件):
gdat.f90:
部分.f90:
我使用 编译它f2py -c gdat.f90 part.f90 -m part
,但我得到关于 nx 和 ny 未定义的错误,例如:/var/tmp/tmp2hzU6s/src.linux-x86_64-2.7/untitledmodule.c: In function 'f2py_rout_untitled_part': /var/tmp/tmp2hzU6s /src.linux-x86_64-2.7/untitledmodule.c:180: error: 'nx' undeclared (第一次在这个函数中使用)
显式数组的定义似乎有问题ARR
。就像我说的,它在 ifort 上编译得很好。
我知道这是一段简单的代码,可以用另一种方式编写,但这只是我写的一个测试片:我实际上是在尝试编译一个更大的 fortran 模块集,这些模块在(使用来自中央模块的变量来定义边界),所以我真的很想让它工作而不是重写其他代码!
python - 尝试在 Mac OS X 上使用 f2py 时出错?
我正在尝试在我的 Mac 上使用f2py 。当我输入f2py
终端时,返回:
知道如何解决这个问题吗?我安装了 numpy 和 scipy。
python - 我希望 Python 作为前端,Fortran 作为后端。我还想让 fortran 部分并行 - 最佳策略?
我有一个 python 脚本,我希望大致做到这一点:
将一些粒子位置调用到数组中
对所有 512^3 个位置运行算法以将它们分配到 NxNxN 矩阵
将该矩阵反馈给python
在 python 中使用绘图来可视化矩阵(即 mayavi)
首先我必须以串行方式编写它,但理想情况下我想并行化第 2 步以加快计算速度。什么工具/策略可以让我开始。我对 Python 和 Fortran 了如指掌,但对于如何针对我的特定问题将两者联系起来却知之甚少。目前我在 Fortran 中做所有事情,然后加载我的 python 程序 - 我想一次完成所有事情。我听说过 py2f,但我想在我进入一个特定的兔子洞之前获得有经验的人的意见。谢谢
编辑:我想要并行的东西是“令人尴尬的并行”,因为这只是 N 个粒子的循环,我想尽快通过该循环。
python-2.7 - 如何在 python 中通过 Cython 和 iso_c_bindings 使用 fortran90 子例程
直到最近,我一直在使用 IDL 来解决我的大部分计算问题。我最常用的例程之一是一些 fortran90 代码,用 C 语言包装并使用 CALL_EXTERNAL 函数从 IDL 调用(这些都不是我写的)。由于各种原因,我将大部分计算转移到 Python,但我还没有找到一个合并 fortran 代码的好方法。F2PY 似乎是最明显的方法,但实际上生成的模块似乎非常不稳定。
基本上我想知道是否有更好的方法来解决这个问题。似乎重新设计现有的 C 包装器和 Cython 以使用 Python 中的代码应该相对简单,尽管我不得不承认我完全不了解 C/Cython 并且对 python 很陌生,所以任何帮助将不胜感激.
作为参考,我在下面包含了现有的 C 包装器:
编辑: 在向其他人提到这一点后,他们建议也应该可以使用 fortran ISO_C_BINDINGS 模块直接与 Cython 交互,绕过对中间 C 包装器的需要。
python - 将 f2py 与 distutils 混合
我有一个 python 包“trees”,其中包含使用 fortran 子例程的 myscript.py 文件。
通常我用
然后我可以做
它利用了 calctree.so
如果我通过运行使用 distutils 打包所有内容
setup.py 的内容在哪里
并在 MANIFEST.in 文件中指定“include trees/calctree.f90”,我可以包含 .f90 文件,但我不知道如何在用户计算机上使用 f2py 进行编译,并放置 .so 文件在适当的地方。有人可以帮忙吗?
谢谢!
python - F2PY 找不到模块
我很难在 Python 中使用 f2py 编译模块。
我有一个用 Fortran 编写的软件,可以在 Linux 64 位机器上很好地编译。F2Py 进一步编译了一个 Python 模块,该模块也使用 Fortran 位。
以下是 Python 模块的编译方式:
但是,一旦我想导入该模块,就会出现错误(在 Ipython 中):
老实说,我对这个错误感到困惑。搜索没有太大帮助,所以我需要在这里问你:我怎样才能让它工作?如果我将 python 模块代码放在与 mod 文件所在的目录相同的目录中,则会产生相同的错误消息。
这是我的一段(原始)代码:
如果我前段时间没记错的话,这个模块是可导入的,但似乎无法使其在 debian64 安装或 debian32bit 计算机上运行。
python - 使用 f2py 从 python 将动态向量分配到 fortran
我有以下由 python 调用的子程序的开始:
从 python 调用:libomp.cic(pos,mpart,boxsize,dim,npart)
运行python脚本时出错:
出于某种原因,当我设置npart
为整数时它可以工作,但它无法npart
从 python 接收并动态创建数组pos
。它适用于mesh
使用dim
但不适用pos
,为什么?它与调用它们的顺序有关吗?
distutils - 将 F2PY 编译步骤翻译成 setup.py
我继承了一个 Fortran 77 代码,它实现了几个子例程,这些子例程通过一个程序块运行,每次运行程序时都需要通过交互式命令提示符进行大量用户输入。由于我想自动运行代码,我将所有子例程移到一个模块中,并通过 F2PY 编写了一个包装器代码。两步编译后一切正常:
这最终会创建三个文件:my_module.o
、my_wrapper.o
、my_module.mod
和my_wrapper.so
. 这my_wrapper.so
是我导入 Python 以访问旧版 Fortran 代码的模块。
我的目标是将此代码包含在更大的科学代码包中,该代码包已经setup.py
用于distutils
构建 Cython 模块。暂时完全忽略了 Cython 代码,我应该如何将 2 步构建转换为setup.py
? 我已经能够弄清楚的关闭看起来像:
但是,这不起作用。我的编译器在 . 上抛出了许多警告my_module.f90
,但它仍然可以编译(如果我使用上面的编译器调用,它不会抛出任何警告)。但是,当它尝试编译包装器时my_module.mod
,即使它已成功创建,它也找不到 .
有什么想法吗?我有一种感觉,我错过了一些微不足道的东西,但文档似乎不够充实,无法表明它可能是什么。
python - 从商业库中排除对子例程的调用
我有一个包含许多有用子例程的 fortran 文件,我想使用 f2py 为其创建一个 Python 接口。
出现问题的原因是某些 fortran 子例程从 NAG 库(名为 c06ebf)调用 FFT 子例程。当导入 Python 时,它会产生“未定义符号:co6ebf”警告。
有没有其他方法可以在我的 Fortran 子例程中执行 FFT 并能够使用 f2py 从它创建 Python 接口?
python - 带有包含文件的 f2py
我正在编译一个名为 prog.f 的 fortran 程序。它包含一个名为 test.inc 的包含文件。下面成功运行并显示我的包含文件已找到。我生成了一个 prog.so 文件。
但是,当我从 python 调用此模块时,我收到此错误消息:
我怀疑与我的编译参数有关,但我对 Fortran 不太熟悉。我还需要包含我的包含文件吗?如果有怎么办?