簡體   English   中英

如何執行`f2py`?

[英]How to execute `f2py`?

如何包裝f2py模塊?

我的意思是,我正在閱讀一些教程,說我應該執行

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

但是,我不知道該在哪里執行,以確保沒有spyder或者我做錯了什么。

為什么?

因為我執行了應該從我的Fortran子例程中使用Python創建Fortran擴展模塊的代碼,但是會生成錯誤。

  • 我的Fortran子程序:

     SUBROUTINE FIB(A,N) INTEGER N REAL*8 A(N) DO I=1,N IF (I.EQ.1) THEN A(I) = 0.0D0 ELSEIF (I.EQ.2) THEN A(I) = 1.0D0 ELSE A(I) = A(I-1) + A(I-2) ENDIF ENDDO END 

我在Python中執行的操作:

import numpy.f2py as f2py

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

錯誤是這個:

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

據我所知,不確定,它應該生成如下內容:

# 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的另一個地方運行第一個代碼...

我試圖重現這一點

您是否在Python代碼中添加了f2py命令? 如果是,那不好。

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

F2PY是 《 F2PY用戶指南和參考手冊》 中的程序/編譯器。F2PY – Fortran到Python接口生成器–項目的目的是提供Python和Fortran語言之間的連接。 F2PY是一個Python軟件包(帶有命令行工具f2py和模塊f2py2e),有助於創建/構建使之成為可能的Python C / API擴展模塊。

此外,這是有關如何使用f2py的詳細說明

OP的問題中可能還有其他問題,但目前最重要的是這個問題。 就像Fortran子例程不使用implicit none ,等等。

好吧,我找到了答案。

看起來像在這個版本的水蟒中,

Python c:\user\anaconda3\scripts\f2py.py FIB1.f -m FIB2 -h FIB1.py

這樣就用f2py.py部分代替了所有這些。 可以肯定的是,將來我在使用該模塊時會遇到更多麻煩,但到目前為止,我的疑慮是顯而易見的。

如果要使用python代碼將fortran轉換為python對象,則可以執行以下操作:

 from numpy import f2py

 with open('path_to_fotran_code') as sourcefile:
     sourcecode = sourcefile.read()

 f2py.compile(sourcecode, modulename='test_module', verbose=1,
              extra_args= '--verbose'
                          '--compiler=mingw32')
 import test_module

如果您沒有mingw32 ,則可以使用--compile=msvc (我在嘗試使用msvc遇到問題,而在使用所有Internet幫助時我都無法解決)。
還要確保將Windows路徑環境配置為指向fortran編譯器路徑。

f2py不是Python命令,您不能在Python Shell或.py源文件中執行它。 這是一個可執行命令。 您必須在系統的外殼程序中執行它。

您仍然沒有回答您擁有哪個操作系統,但是如果是Windows,則必須在CMD.exe命令提示符或PowerShell中運行它。 如果是Linux或類似的操作系統,請在bash或類似的shell中運行它。 您必須在Fortran源文件所在的目錄(文件夾)中運行它。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM