问题标签 [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 模块中的函数范围与为 fortran 程序编译时不同?
我的问题是使用 f2py 编译时,模块中定义的函数无法识别某些模块变量。在声明传递给函数的变量类型的参数(例如描述类型的变量real
或维度元素)时会引发错误。使用 gfortran 编译时我没有收到此错误。使用 f2py 编译时有什么区别以及如何纠正这些错误?
我的示例文件moddata.f90
包含以下代码:
我编译
我得到这些错误:
如果我integer, parameter :: nelem=3
之前重新定义integer, dimension(nelem), intent(in) :: y
并重新编译,我会得到
每个real(kind=dp)
声明都有相同的错误,并且
所以我必须在函数中重新定义dp
by 。integer, parameter :: dp = selected_real_kind(15)
然后它就起作用了。
当我使用 fortran 包装器编译此模块时,我没有收到这些错误。我想知道为什么nelem
和dp
在函数中没有正确限定 f2py 的范围?
python - 为什么 Fortran 中的单变量 Horner 比 NumPy 对应的更快,而双变量 Horner 不是
我想在 Python 中执行多项式微积分。里面的polynomial
包裹numpy
对我来说不够快。因此,我决定在 Fortran 中重写几个函数,并使用f2py
它来创建可以轻松导入 Python 的共享库。目前,我正在将我的单变量和双变量多项式评估例程与他们的numpy
同行进行基准测试。
在单变量例程中,我使用霍纳的方法numpy.polynomial.polynomial.polyval
。numpy
我观察到,随着多项式阶数的增加,Fortran 例程比对应例程快的因素也在增加。
在双变量例程中,我两次使用霍纳的方法。首先在 y 中,然后在 x 中。不幸的是,我观察到,对于增加多项式阶数,numpy
对应物会赶上并最终超过我的 Fortran 例程。由于numpy.polynomial.polynomial.polyval2d
使用类似于我的方法,我认为第二个观察结果很奇怪。
我希望这个结果源于我对 Fortran 和f2py
. 可能有人知道为什么单变量例程总是显得优越,而双变量例程只对低阶多项式更优越?
编辑 这是我最新更新的代码、基准脚本和性能图:
多项式.f95
benchmark.py(使用此脚本生成绘图)
结果
编辑对steabert提案的更正
编辑测试代码以验证直接上面的代码对于 x > 1 的结果是否很差
python - f2py 不适用于树冠
我对python比较陌生。我在工作中使用 Enthought Canopy。从导入f2py
后numpy
,我在尝试执行时继续遇到无效的语法错误:
不用说,我已经gfortran
安装了,并且该程序存在于工作目录中。甚至试图奔跑
正如网上某处推荐的那样,会导致错误提示:name 'c' is not defined
。在输入 f2py 时:
这表明已安装 f2py。谁能知道我哪里出错了?
python - 将fortran文件导入python
这是一个非常新手的问题,但是在谷歌搜索了一段时间后,我一直无法找到解决方案。我正在使用 Eclipse(在 Linux Mint 中)编写 Python 代码,它需要一些用 Fortran 77 编写的例程(代码位于名为 的文件中fortran_code.f
)。我已经习惯f2py
了获取文件fortran_code.so
。此文件与 Python 代码 ( ) 位于同一文件夹中../workspace/python_project/src
。Python 代码仅包括:
再一次,结果是:
Fortran 子程序代码为:
要获取 .so 文件(fortran_code.so),我使用:
f2py的版本是2,Python的版本是2.7.4
解决此问题的任何帮助都将非常有用。
谢谢!
python - 为 WinPython 设置 python 路径以使用 f2py
我在我的 Windows 7 副本上安装了 Winpython 发行版。从它复制到的文件夹中启动 iPython 控制台和发行版中的其他项目工作正常。
我想使用 numpy 的 f2py 模块来从 Python 调用 Fortran 子例程。我的理解是 f2py 必须从命令行调用,但是系统似乎没有找到 f2py,ImportError: no module named site
当我调用它时返回,无论是否带有标志。当我尝试从命令行运行 python 本身时,也会返回同样的错误。
当我手动导航到 Winpython 目录(例如C:\Users\AGK\WinPython-32bit-2.7.5.3\python-2.7.5
)并调用 f2py -c --help-fcompiler
以查看是否在那里找到 f2py 时,我收到以下错误
有人可以向我解释这个错误的含义和/或如何将 f2py 与 Winpython 一起使用吗?谢谢!
python - f2py:找不到可执行文件 C:Python27pythonw.exe 可执行文件 C:Python27pythonw.exe 不存在
我正在尝试使用numpy.f2py
如下所述运行一个简单的 Fortran 子例程:http: //docs.scipy.org/doc/numpy/user/c-info.python-as-glue.html#calling-f2py-from-python
当我尝试f2py.compile(source, modulename='add')
从 python 编译 () 时,出现以下错误:
寻找这个文件,我发现C:\Python27\pythonw.exe
我的系统中确实存在,那么路径可能有问题吗?
无论如何,关于如何使我的代码工作的任何建议?
python - 用 numpy 和测试套件打包
介绍
免责声明:我对使用 distutils 进行 python 打包非常陌生。到目前为止,我只是将所有内容都隐藏到模块中,并手动打包并在此基础上进行开发。我以前从未写过setup.py
文件。
我有一个 Fortran 模块,我想在我的 python 代码中使用 numpy。我认为最好的方法是 f2py,因为它包含在 numpy. 为了自动化构建过程,我想使用 distutils 和相应的 numpy 增强功能,其中包括 f2py 包装器的便利功能。
我不明白我应该如何组织我的文件,以及如何包含我的测试套件。
我想要的是./setup.py
用于构建、安装、测试和开发的可能性。
我的目录结构如下所示:
该setup.py
文件包含以下内容:
运行后./setup.py build
我得到。
其中既不包括__init__.py
文件,也不包括测试。
问题
- 是否真的有必要将路径添加到扩展的每个源文件?(即
volterra/integral.f90
)我不能给一个参数说,在里面寻找东西volterra/
吗?,top_path
和package_dir
参数没有起到作用。 - 目前,该
__init__.py
文件不包含在构建中。这是为什么? - 如何在此设置中运行我的测试?
- 在这样的环境中进行开发的最佳工作流程是什么?我不想为我所做的每一次更改都安装我的包。当需要编译一些扩展模块时,如何在源码目录下进行开发?
python-2.7 - f2py 与英特尔 Fortran 编译器
我正在尝试使用 f2py 将我的 python 程序与我的 Fortran 模块接口。
我在Win7平台上。
我使用最新的 Anaconda 64 (1.7) 作为 Python+NumPy 堆栈。
我的 Fortran 编译器是最新的 Intel Fortran 编译器 64(版本 14.0.0.103 Build 20130728)。
我在执行时遇到了许多问题f2py -c -m PyModule FortranModule.f90 --fcompiler=intelvem
最后一个,我似乎无法解决的是,看起来 f2py/distutils 传递给编译器的标志序列与 ifort 期望的不匹配。
调用 ifort 时,我收到一系列有关未知选项的警告消息。
我怀疑这与我最后从链接器得到的错误有关
它以一个简单的结尾
我的猜测是,这是因为选项序列中缺少 /link 标志。因此,/l /L 选项不会传递给链接器,编译器认为这些选项是针对他的。
f2py 生成的 ifort 命令如下所示:
我不知道为什么“-dll”重复了两次(我不得不从原来的“-shared”更改那个标志)。
现在,我尝试查看 f2py 和 distutils 代码,但还没有弄清楚如何在命令输出中添加额外的 /link 。我什至无法找到生成此输出的位置。
如果有人过去遇到过这个问题和/或可能有一些建议,我将非常感激。
感谢您的时间
python - f2py 停止命令的同义词
我有一个在需要时从 python 调用的 fortran 代码。有时在 fortran 计算中会产生错误,并使用命令 STOP 进行处理,该命令会完全停止 fortran 和 python 代码。但是,我需要 python 才能继续运行。是否有任何其他命令停止 fortran 代码不会影响 python?
python - f2py 使用模块 - 签名文件
我创建了使用模块 dimpar 的签名文件。当我尝试使用签名文件进行编译时,f2py 无法识别 msects 和 maxpar,结果我得到:
我如何让 f2py 了解这些参数来自模块?
谢谢
签名文件:
模块 dimpar:
这是一些复制问题的示例代码:
dimpar.f90
数组.f90
编译后我运行: