问题标签 [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 与 fortran netcdf
我正在尝试使用 f2py 编译一些使用 netcdf 库的 fortran 代码。编译似乎可以工作,但是当我尝试在 python 中导入模块时,我收到错误消息:
编译时还有如下输出:
我尝试使用的代码是(注意这是演示问题的简化代码):
要编译它,我使用以下命令:
有谁知道我怎样才能让它正常工作?在此先感谢您的任何建议。
蒂姆
numpy - 确定编译器标志的来源
编译时,如何确定设置了哪些编译器标志?我正在处理一个奇怪的问题,如果我没有设置任何环境变量:
然后 gfortran 使用所有这些标志:
-Wall -arch i686 -arch x86_64 -Wall -undefined dynamic_lookup -bundle
而在设置了这些的环境中
唯一的标志是:-Wall
我只是不知道在分发代码时如何确保一致的构建环境。
编辑:进一步调查暗示这种魔法可能发生在numpy.distutils.fcompiler
,但我不知道!
python - F2PY - 从子程序访问模块参数
我无法让 f2py 在用于定义输入数组维度的单独子例程中引用来自模块的参数。即参数在模块中定义:
并且参数 dimsize 需要在另一个文件的子例程(不包含在模块中)中引用,这将是我的 python 模块的入口点:
我这样编译:
但得到这个错误:
我已尝试修改 testsub.g90 以包含以下指令,正如其他帖子所建议的那样:
但无济于事。我需要将子程序与模块分开。
如何让 f2py 正确解析变量dimsize
?
TIA
callback - 如何使用 F2Py 从 Fortran 中的 Python 回调中返回值
考虑以下在 test.f 中定义的 Fortran 子例程:
还有以下 Python 代码,在 call_test.py 中定义:
使用以下(英特尔编译器)编译:
当我运行测试时,我希望这是输出:
但我实际上得到了这个:
似乎b
正在使用默认值而不是test
. 我尝试在 Fortran 中使用以下内容:
12
但是我的程序在打印到控制台后崩溃了。
有什么想法可以在这里发生吗?崩溃的原因将是一个奖励,但我真的只是想在这一点上让一个简单的回调工作。
python - 使用 f2py 编译 FORTRAN 模块
我很久以前用 f2py 编译过一个 FORTRAN 程序。但是当我今天重新编译它失败时。我猜原因是没有指向正确的编译器。上次,我的机器很干净,只安装了 gnu 作为唯一的编译器,而今天它从visualstudio2012
Parallel Studio XE 2013
MinGW32-xy
Rtools
. 一般来说,我确信代码是正确的。那么任何人都可以就如何使用 f2py 的论点给我一些建议吗?以下是我的命令:
后来,根据这篇文章,我将 VS90COMNTOOLS=%VS110COMNTOOLS% 添加到我的用户环境中,但出现以下错误。我真的很感谢你的帮助!
更新:
第二种编译方法有效,尽管编译过程产生了错误。我不确定我是否可以始终忽略这些错误?
python - 带有 fortran 库的 Python 多处理
我正在使用 Python 中的多处理模块将一组作业映射到我拥有的尽可能多的内核上。我包装的工作主要是用一些包装的 fortran 代码(用 f2py 包装)执行的。当我只调用这些作业时,它们使用所有内核都很好。但是,如果我尝试先独立调用 fortran 库(而不是通过函数Pool().map()
),然后调用 map,整个程序就会挂起(如果你想知道,它恰好挂在 threading.py 的第 339 行,其中唯一的代码是)。waiter.acquire()
对于我正在编写的程序,我需要在去映射之前调用库。我通过首先使用Pool().map()
一个进程调用它来解决这个问题,但这是一个 hack,我想知道为什么我必须这样做!
更明确地说,这不起作用:
但这确实:
CAMB 的 python 包装器在哪里pycamb
,它是一个 fortran 库。
python - 如何在 python 代码中运行 f2py
我在 Linux Mint 下使用 python 2.7,我有一些 fortran 代码,我使用 f2py 将其导入到 python 代码中。
所以我输入终端:
它工作正常。
现在我想在 python 代码中而不是在终端中使用 f2py。我尝试过类似的东西
但它不起作用。这就是我得到的:
fortran 和 python 代码都在同一个目录下
我想我可能必须使用 distutils,但我不知道如何
任何想法都会有所帮助
谢谢
python - 将数组从 Python 传递到 Fortran(并返回)
背景:
我的程序目前在 Python 中组装数组。这些数组连接到前端 UI,因此具有交互元素(即数组元素中的用户指定值)。然后将这些数组保存到 .txt 文件中(取决于它们以后的用途)。然后,用户必须离开 Python 程序并运行一个单独的 Fortran 脚本,该脚本基于 Python 输出文件模拟系统。虽然这最多只需要几分钟,但理想情况下,我希望在不离开 Python UI 的情况下自动化该过程。
组装数组 (Python) ->编辑数组 (Python) ->导出到文件 (Python)
->导入文件 (Fortran) ->运行模拟 (Fortran) ->将结果导出到文件 (Fortran)
->将文件导入 UI,显示图形 (Python)
问题:
这可能吗?自动化此过程的选项有哪些?我可以完全删除重复的文件导出/导入吗?
编辑: 我还应该提到 fortran 脚本使用 Lapack,我不知道这是否有所作为。
python - 使用 F2Py 的 Fortran 矩阵的间歇性内存分配错误
背景:
我有一个 Python 脚本,它使用 Fortran 代码进行密集计算。我正在使用 F2Py 来执行此操作。一个特定的 Fortran 子例程构建了一个用于以后计算的矩阵。该子例程在循环中迭代,并在每一步求解。下面给出了使用基本数组和变量的代码片段:
但是,由于某种原因,这个子例程使我的 Python 程序崩溃,并生成以下 malloc 错误:
这个错误是不寻常的,因为它不是每次都发生,而是在很大一部分时间发生。我已经确定错误的根源在于:
好像我将其更改为:
错误停止。但是,Complex_Var 对输出至关重要,否则程序只会产生零。该线程与我的问题有一些相似之处,但是每次运行后似乎都会出现该问题,而我的则没有。我已经注意确保数组没有不匹配,其他安排(即不考虑 numpy 的不同数组格式)会立即产生分段错误,正如预期的那样。
问题
为什么 Complex_Var 会破坏代码?为什么问题是间歇性的而不是系统性的?是否有任何明显(或不那么明显)的提示可以避免这种情况?
任何帮助将非常感激!
python - setuptools、numpy.distutils.core、install_requires 和 f2py 扩展
我一直在努力创建一个 python 包,其中包含一些我想在 numpy 中使用 f2py 合并的 fortran 代码。目标是将其上传到 PyPI,以便用户可以使用 pip 进行安装。我做了一些研究,发现 setuptools 和 numpy.distutils.core 具有我想要的功能(我认为)。包的结构是这样的,
我在 f2py 目录中有 fortran 代码。我的包需要 numpy 和另一个名为 quantity 的 python 包,它们都在 PyPI 中。我已经用 install_requires 关键字在 setup 函数中指出了这一点。我的测试周期是这样的,
注册并上传包到 PyPI
创建一个没有系统包的虚拟环境
进入虚拟环境并尝试使用 pip 安装
我希望它检测未满足的要求(numpy 和数量),下载它们,然后继续我的包安装。我对应该调用哪个设置函数(来自 setuptools 的函数或来自 numpy.distutils.core 的函数)感到困惑。似乎一个有 install_requires,一个有 ext_modules。到目前为止,当我在虚拟环境中执行 pip 命令时,我收到一个错误,抱怨找不到 numpy
是否可以将 numpy 作为要求并在 setup.py 脚本中使用 numpy?
我的 setup.py 看起来像这样,