问题标签 [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 回答
1342 浏览

python - 使用 f2py 创建可分发的 windows python 模块

我用 python 和 f2py 编写了一些代码,主要使用 linux。这一切都很好,但现在我想与 Windows 用户分享它,所以我正在尝试制作一个可分发给不一定有 gfortran 或 gcc 的用户的模块。我可以访问 windows xp 盒子,正在使用 mingw 和 gfortran。我可以在该机器上编译和使用该模块,但在其他机器上创建的 pyd 似乎需要 dll 的 libgcc 和 libgfortran。这是来自http://www.scipy.org/F2PY_Windows的示例:

编译

这在我编译它的机器上按预期工作,但如果我将它复制到另一台机器,我会得到

使用依赖walker,我发现它找不到libgcc_s_dw2-1.dll 和libgfortran-3.dll 的dll。是否可以在不假设用户拥有 gcc 和 gfortran 的情况下创建一个我可以分发的 pyd?我在两台机器上都使用 python2.7,都是 32 位的。一个是xp,另一个是windows 7。

0 投票
1 回答
288 浏览

google-app-engine - 在谷歌应用引擎中导入 .pyd 文件?

我有一些旧的 fortran77 代码,我使用 f2py 将它们转换为 .pyd 文件。但是,我可以在应用引擎中导入这些 .pyd 文件……这是否意味着 GAE 不支持 .pyd 文件?如果是这样,当我的网站由 GAE 托管时,有什么方法可以调用这些 fortran77 代码?在 Linux 机器上编译 fortran 77 代码怎么样?@Guido van Rossum 有任何官方确认吗?

谢谢!

0 投票
1 回答
773 浏览

python - Fortran 扩展编译期间安装脚本出错:“没有这样的文件或目录”

我已经设法使用 f2py 手动包装了一组 Fortran 90 源。为此,我按照以下说明生成了签名文件:http: //docs.scipy.org/doc/numpy/user/c-info.python-as-glue.html,我可以获得一个 .so 我可以从一些 Python 接口文件调用。

现在我想从中创建一个包,它将自动构建 Fortran 扩展。包含 Fortran 源和签名文件的文件夹中唯一添加的内容现在是 setup.py 文件,其中包含以下内容:

然后激活一个virtualenv并尝试安装包

但最后得到以下错误:

启动 setup.py 后的第一行给出:

但是设置过程继续进行,Fortran 扩展似乎已编译(显示的行看起来像我通过手动运行 f2py 得到的)。

我试图从网上提供的示例中找到解决方案,但其中大多数都过于简单而无济于事。有 Python 打包经验的人可以帮我解决这个问题吗?

0 投票
1 回答
1319 浏览

python - F2PY 返回 ValueError:无效的版本号“4”。

我是 Python 新手,希望能够使用我现有的 Fortran 代码并从 Python 运行它。我正在尝试按照在线说明使用 F2PY 编译一个小的“Hello world”Fortran 程序。

我在 Windows 上工作。到目前为止,我已经安装了 Python 2.7.3、NumPy 1.6.1、SciPy 10.1 和 MinGW 4.8。

然后我尝试了(除其他外)

这会报告无效的版本号。

ValueError:无效的版本号“4”。

如果有人能建议出了什么问题以及我需要改变什么才能让它运行,我将不胜感激。F2PY 的完整输出如下:

0 投票
1 回答
776 浏览

fortran - f2py 和 WRITE 语句

我试过寻找这个答案,因为它看起来不太复杂,但我没有成功。我正在尝试使用一些旧的 FORTRAN 代码并将其带入 Python,以便我可以使用它。在此过程中,我遇到了一些文件 I/O 问题,我试图了解 f2py 如何处理这些问题。我正在使用 gfortran 开发 Ubuntu 11.10。例如,我试图使用以下子例程:

然后我使用 gfortran 和 f2py 进行编译:

它创建了 inout.so 共享库。然后在 Python 中,我尝试了一个简单的测试:

然后退出 Python 并打开新创建的“测试”文件,它是空的。我可以打印到屏幕没问题,但打印到文件似乎不起作用。任何指导将不胜感激。f2py 文档没有提到 WRITE 语句。

0 投票
1 回答
2440 浏览

python - f2py:包装使用分布在不同文件中的子程序的 fortran 模块?

由于我之前描述的原因,我需要在 Python 中使用 LAPACK 的 dgesvd 和 zgesvd 方法,而不是使用 numpy 包装的方法。

有人指出,我可以使用 f2py 来创建自己的 python 包。问题是,lapack 中的 dgesdd 调用了许多其他方法,例如 dbdsqr、dgelqf 以及一些 BLAS 例程,我不知道应该如何处理。

谁能指出,在不必重新编译整个 lapack 库的情况下创建 dgesvd python 模块的正确方法是什么?

非常感谢米沙

0 投票
1 回答
1122 浏览

arrays - f2py:一些返回的数组未更改/为空

嗨,我正在使用 f2py 来包装 lapack 例程 dgesvd,方法是编译 dgesvd.f 文件并将其链接到 llapack,如此处所述

根据文档字符串, dgesvd 模块具有签名:

然后我使用以下 ocde 调用模块:

这给了我存储在 中的正确奇异值out_s,但是矩阵out_uout_vh仍然只填充零,我是否必须做一些不同的事情来获得左/右奇异向量?

代码运行通过,没有任何错误,out_info即为0。

(jobu 和 jobvt 的参数“S”告诉例程只计算前 min(m,n) 个奇异向量。将其更改为“A”,没有任何区别)

任何想法都受到高度赞赏!谢谢米莎

0 投票
1 回答
639 浏览

python - 在 Python 中复制 FORTRAN(通过 F2PY 调用)输出

我正在通过 f2py 在 python 中使用一些 fortran 代码。我想将 fortran 输出重定向到我可以使用的变量。我发现这个问题很有帮助。 在 Python 中重定向 FORTRAN(通过 F2PY 调用)输出

但是,我还想选择将 fortran 代码写入终端并进行记录。这可能吗?

我有以下愚蠢的课程,我从上面的问题和http://websrv.cs.umt.edu/isis/index.php/F2py_example拼凑而成 。

我的代码目前看起来像这样:

我的想法是有一个名为静默的标志,我可以用它来检查我是否允许显示 fortran 输出。然后在我构建它时将其传递给 captureTTY,即

我不太确定如何实现这一点。显而易见的事情是:

我不是这个的忠实拥护者,因为我的 fortran 方法需要很长时间才能运行,很高兴看到它实时更新,而不仅仅是在最后。

有任何想法吗?代码将在 Linux 和 Mac 机器上运行,而不是 Windows。我浏览了网络,但没有找到解决方案。如果有的话,我相信它会非常明显!

干杯,

G

澄清

从评论中我意识到上述并不是最清楚的。我目前拥有的是记录 fortran 方法的输出的能力。但是,这会阻止它打印到屏幕上。我可以将它打印到屏幕上,但无法记录它。我希望可以选择同时执行这两项操作即记录输出并将其实时打印到屏幕上。

顺便说一句,fortran 代码是一种拟合算法,我感兴趣的实际输出是每次迭代的参数。

0 投票
1 回答
2340 浏览

python - make 不运行 .py 文件

我正在尝试使用 Fortran 代码创建一个 Python 模块f2py。我已经为我的项目设置了一个 Makefile。我在 Windows 7 上使用 MinGW 和 Python 3.2.2。当我运行

一切都编译并运行良好。但是,当我在 Makefile 中创建目标并运行它时,它会执行以下操作:

为什么不make运行命令,我该如何解决?

编辑:运行输出中显示的命令不起作用:

但是,以下方法确实有效:

编辑 2:这引发了另一个问题 - 什么是env以及为什么要make添加它?

编辑 3:根据 Florian 的评论,似乎是env由于makef2py.py 中存在 shebang 行而添加的。#我编辑了 f2py.py,在 shebang 前面添加了一个附加项。我现在有以下问题:

0 投票
1 回答
992 浏览

python - f2py 数组值函数

最新版本的 f2py 是否支持包装数组值 fortran 函数?在一些古老的文档中,这不受支持。现在怎么样了?

例如,让我们将以下函数保存为 func.f95。

我编译这个f2py --fcompiler=gnu95 -c -m func func.f95

然后让下面的python代码为test_func.py

的输出
python test_func.py