我不能讓f2py在一個單獨的子程序中用來定義輸入數組維度的模塊中引用一個參數。即該放慢參數是defeind模塊中:F2PY - 子程序中的訪問模塊參數
! File: testmod.f90
MODULE testmod
INTEGER, PARAMETER :: dimsize = 20
END MODULE testmod
和dimsize需要在另一個文件中的子程序(不包含在模塊中)中引用的參數,這將是我的Python模塊的入口點:
! File testsub.f90
SUBROUTINE testsub(arg)
USE testmod
REAL, INTENT(IN) :: arg(dimsize)
END SUBROUTINE testsub
我這樣進行編譯:
f2py -m testmod -h testmod.pyf testsub.f90
pgf90 -g -Mbounds -Mchkptr -c -fPIC testmod.f90 -o testmod.o
pgf90 -g -Mbounds -Mchkptr -c -fPIC testsub.f90 -o testsub.o
f2py -c testmod.pyf testmod.o testsub.o
,但得到這個錯誤:
testmodmodule.c: In function 'f2py_rout_testmod_testsub':
testmodmodule.c:180: error: 'dimsize' undeclared (first use in this function)
我試圖修改testsub.g90包括以下指令,如建議妮其他職位:
SUBROUTINE testsub(arg)
USE testmod
!f2py integer, parameter :: dimsize
REAL, INTENT(IN) :: arg(dimsize)
END SUBROUTINE testsub
,但無濟於事。我需要保持子程序與模塊分離。
如何獲得f2py正確解析變量dimsize
?
TIA
我在使用f2py版本2時在Windows 7上遇到了'ifort'的問題。這個問題似乎發生在_first_ f2py調用中,我看到錯誤: 'In::testmoddd:testsub.f90: testsub get_useparameters:no testmod使用的testub信息 In::testmoddd:testsub.f90:testsub getarrlen:變量「dimsize」undefined「 – bdforbes
@bdforbes:嗯......我開始認爲這只是一個嚴重的問題使用Fortran90時f2py的缺點。我應該堅持F77! – ccbunney