首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何执行“f2py”?

如何执行“f2py”?
EN

Stack Overflow用户
提问于 2017-01-26 20:36:52
回答 4查看 3.4K关注 0票数 0

如何在f2py模块中包装?

我是说,我正在读一些教程说我应该

代码语言:javascript
复制
f2py FIB1.f -m FIB2 -h FIB1.pyf

但是,我不知道该在哪里执行,肯定不会在spyder中执行,也不知道我做错了什么。

为什么?

因为我执行的代码应该使用Python从我在Fortran中的子程序创建Fortran的扩展模块,但是会生成一个错误。

  • 我的Fortran子程序: 子例程FIB(A,N)整数N实*8A(N)做I=1,N如果(I)= 0.0D0 ELSEIF (I.EQ.2)则A(I) = 1.0D0其他A(I) = A(I-1) + A(I-2) ENDDO结束

我在Python中执行的内容:

代码语言:javascript
复制
import numpy.f2py as f2py

f2py FIB1.f -m FIB2 -h FIB1.pyf

错误是这样的:

代码语言:javascript
复制
runfile('F:/SLB/Larryf2py/teste.py', wdir='F:/SLB/Larryf2py')
  File "F:/SLB/Larryf2py/teste.py", line 9
    f2py FIB1.f -m FIB2 -h FIB1.pyf
            ^
SyntaxError: invalid syntax

据我所知,不确定,它应该产生如下内容:

代码语言:javascript
复制
# File setup.py
def configuration(parent_package='',top_path=None):
    from numpy.distutils.misc_util import Configuration
    config = Configuration('',parent_package,top_path)

    config.add_extension('m',
                         sources = ['m.pyf','foo.c'])
    return config
if __name__ == "__main__":
    from numpy.distutils.core import setup
    setup(**configuration(top_path='').todict())

这个生成的例子是C的,但是我认为对Fortran也是这样的。

我怎么想的?我应该在Python的另一个地方运行第一段代码。

我试着复制

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2017-01-27 07:26:32

f2py不是Python命令,您不能在Python或.py源文件中执行它。它是一个可执行的命令。您必须在系统的shell中执行它。

您仍然没有回答您有哪个操作系统,但是如果是Windows,则必须在CMD.exe命令提示符或PowerShell中运行它。如果它是Linux或类似的,请在bash或类似的shell中运行它。您必须在Fortran源文件所在的同一目录(文件夹)中运行它。

票数 0
EN

Stack Overflow用户

发布于 2017-01-27 07:35:11

您是否在f2py代码中添加命令?如果是,是不好的。

f2py FIB1.f -m FIB2 -h FIB1.pyf需要在命令行中,而不是在任何*.py脚本中。

来自F2PY用户指南和参考手册 f2py是一个从F2PY -Fortran到Python接口生成器的程序/编译器--项目是提供F2PY和F2PY语言之间的连接。F2PY是一个Python包(带有命令行工具f2py和模块f2py2e),它有助于创建/构建Python /API扩展模块,使其成为可能。

此外,这里还有关于如何使用解释的详细f2py。

在OP的问题中可能还有其他一些问题,但目前最重要的是这个问题。就像Fortran不使用implicit none,__等。

票数 2
EN

Stack Overflow用户

发布于 2017-01-27 20:43:46

我找到了答案。

看起来在这个版本的anaconda中,有一个叫做tu --

代码语言:javascript
复制
Python c:\user\anaconda3\scripts\f2py.py FIB1.f -m FIB2 -h FIB1.py

这样,f2py.py部分就取代了所有这些。当然,将来使用这个模块我会遇到更多的麻烦,但到目前为止,我的疑虑是显而易见的。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41882534

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档