【发布时间】:2017-05-19 15:19:40
【问题描述】:
我正在用 Python 编写代码,该代码利用了 Fortran 90 优化算法。 这个想法是让 python 中的 MAIN 例程调用 Fortran 中的算法,该算法调用另一个 python 函数并传递一些参数以计算目标函数的值(即,它返回一个标量),如下所示:
[Python) MAIN ⇒ [Fortran] BB_algo ⇒ [Python] FUNCT
此类问题应通过使用 python 中的 f2py 库来解决。 为了尝试使这种方法起作用,我编写了一些更简单的代码来进行类似的操作。
Fortran 子例程被称为writepy:
subroutine writepy(funct,n)
implicit none
real, EXTERNAL :: funct
INTEGER :: I,n
REAL*8 :: r
!f2py intent(in), n
!f2py intent(out), r
!f2py real y
!f2py y=funct(y)
r = 1D0
DO I=1,5
write(*,*) 'funct:', funct(n)
r = r + funct(n)
ENDDO
return
end
而Python中的代码如下:
import os
os.system("f2py -m wp -c writepy.f90")
import wp
def funct(n):
print(n);
return n
if __name__ == '__main__':
n=3;
wp.writepy(funct,n)
Fortran 用 gfortran 编译得很好,但是当我尝试用 f2py 编译它时,似乎 Fortran 的 C 中的包装器出现了一些错误,但我现在真的不知道该怎么做。
我得到以下信息:
running build
running config_cc
unifing config_cc, config, build_clib, build_ext, build commands --compiler options
running config_fc
unifing config_fc, config, build_clib, build_ext, build commands --fcompiler options
running build_src
build_src
building extension "wp" sources
f2py options: []
f2py:> /var/folders/4q/g84zdhps5gzbk3t5mfplqjsc0000gn/T/tmpi34fejrm/src.macosx-10.6-x86_64-3.5/wpmodule.c
creating /var/folders/4q/g84zdhps5gzbk3t5mfplqjsc0000gn/T/tmpi34fejrm/src.macosx-10.6-x86_64-3.5
Reading fortran codes...
Reading file 'writepy.f90' (format:free)
{'after': '(in), n', 'before': '', 'this': 'intent'}
Line #12 in writepy.f90:" intent(in), n"
analyzeline: no name pattern found in intent statement for ''. Skipping.
{'after': '(out), r', 'before': '', 'this': 'intent'}
Line #13 in writepy.f90:" intent(out), r"
analyzeline: no name pattern found in intent statement for ''. Skipping.
Post-processing...
Block: wp
Block: writepy
Post-processing (stage 2)...
Building modules...
Building module "wp"...
Constructing wrapper function "writepy"...
sign2map: Confused: external funct is not in lcb_map[].
append_needs: unknown need 'funct'
append_needs: unknown need 'funct'
writepy(funct,n,[funct_extra_args])
Wrote C/API module "wp" to file "/var/folders/4q/g84zdhps5gzbk3t5mfplqjsc0000gn/T/tmpi34fejrm/src.macosx-10.6-x86_64-3.5/wpmodule.c"
adding '/var/folders/4q/g84zdhps5gzbk3t5mfplqjsc0000gn/T/tmpi34fejrm/src.macosx-10.6-x86_64-3.5/fortranobject.c' to sources.
adding '/var/folders/4q/g84zdhps5gzbk3t5mfplqjsc0000gn/T/tmpi34fejrm/src.macosx-10.6-x86_64-3.5' to include_dirs.
copying /Users/Valyria/anaconda/lib/python3.5/site-packages/numpy/f2py/src/fortranobject.c -> /var/folders/4q/g84zdhps5gzbk3t5mfplqjsc0000gn/T/tmpi34fejrm/src.macosx-10.6-x86_64-3.5
copying /Users/Valyria/anaconda/lib/python3.5/site-packages/numpy/f2py/src/fortranobject.h -> /var/folders/4q/g84zdhps5gzbk3t5mfplqjsc0000gn/T/tmpi34fejrm/src.macosx-10.6-x86_64-3.5
build_src: building npy-pkg config files
running build_ext
customize UnixCCompiler
customize UnixCCompiler using build_ext
customize Gnu95FCompiler
Found executable /usr/bin/gfortran
customize Gnu95FCompiler
customize Gnu95FCompiler using build_ext
building 'wp' extension
compiling C sources
C compiler: /usr/bin/clang -Wno-unused-result -Wsign-compare -Wunreachable-code -DNDEBUG -g -fwrapv -O3 -Wall -Wstrict-prototypes -I/Users/Valyria/anaconda/include -arch x86_64
creating /var/folders/4q/g84zdhps5gzbk3t5mfplqjsc0000gn/T/tmpi34fejrm/var
creating /var/folders/4q/g84zdhps5gzbk3t5mfplqjsc0000gn/T/tmpi34fejrm/var/folders
creating /var/folders/4q/g84zdhps5gzbk3t5mfplqjsc0000gn/T/tmpi34fejrm/var/folders/4q
creating /var/folders/4q/g84zdhps5gzbk3t5mfplqjsc0000gn/T/tmpi34fejrm/var/folders/4q/g84zdhps5gzbk3t5mfplqjsc0000gn
creating /var/folders/4q/g84zdhps5gzbk3t5mfplqjsc0000gn/T/tmpi34fejrm/var/folders/4q/g84zdhps5gzbk3t5mfplqjsc0000gn/T
creating /var/folders/4q/g84zdhps5gzbk3t5mfplqjsc0000gn/T/tmpi34fejrm/var/folders/4q/g84zdhps5gzbk3t5mfplqjsc0000gn/T/tmpi34fejrm
creating /var/folders/4q/g84zdhps5gzbk3t5mfplqjsc0000gn/T/tmpi34fejrm/var/folders/4q/g84zdhps5gzbk3t5mfplqjsc0000gn/T/tmpi34fejrm/src.macosx-10.6-x86_64-3.5
compile options: '-I/var/folders/4q/g84zdhps5gzbk3t5mfplqjsc0000gn/T/tmpi34fejrm/src.macosx-10.6-x86_64-3.5 -I/Users/Valyria/anaconda/lib/python3.5/site-packages/numpy/core/include -I/Users/Valyria/anaconda/include/python3.5m -c'
clang: /var/folders/4q/g84zdhps5gzbk3t5mfplqjsc0000gn/T/tmpi34fejrm/src.macosx-10.6-x86_64-3.5/fortranobject.c
In file included from /var/folders/4q/g84zdhps5gzbk3t5mfplqjsc0000gn/T/tmpi34fejrm/src.macosx-10.6-x86_64-3.5/fortranobject.c:2:
In file included from /var/folders/4q/g84zdhps5gzbk3t5mfplqjsc0000gn/T/tmpi34fejrm/src.macosx-10.6-x86_64-3.5/fortranobject.h:13:
In file included from /Users/Valyria/anaconda/lib/python3.5/site-packages/numpy/core/include/numpy/arrayobject.h:4:
In file included from /Users/Valyria/anaconda/lib/python3.5/site-packages/numpy/core/include/numpy/ndarrayobject.h:18:
In file included from /Users/Valyria/anaconda/lib/python3.5/site-packages/numpy/core/include/numpy/ndarraytypes.h:1788:
/Users/Valyria/anaconda/lib/python3.5/site-packages/numpy/core/include/numpy/npy_1_7_deprecated_api.h:15:2: warning: "Using deprecated NumPy API, disable it by " "#defining NPY_NO_DEPRECATED_API NPY_1_7_API_VERSION" [-W#warnings]
#warning "Using deprecated NumPy API, disable it by " \
^
/var/folders/4q/g84zdhps5gzbk3t5mfplqjsc0000gn/T/tmpi34fejrm/src.macosx-10.6-x86_64-3.5/fortranobject.c:139:18: warning: comparison of integers of different signs: 'Py_ssize_t' (aka 'long') and 'unsigned long' [-Wsign-compare]
if (size < sizeof(notalloc)) {
~~~~ ^ ~~~~~~~~~~~~~~~~
2 warnings generated.
clang: /var/folders/4q/g84zdhps5gzbk3t5mfplqjsc0000gn/T/tmpi34fejrm/src.macosx-10.6-x86_64-3.5/wpmodule.c
In file included from /var/folders/4q/g84zdhps5gzbk3t5mfplqjsc0000gn/T/tmpi34fejrm/src.macosx-10.6-x86_64-3.5/wpmodule.c:18:
In file included from /var/folders/4q/g84zdhps5gzbk3t5mfplqjsc0000gn/T/tmpi34fejrm/src.macosx-10.6-x86_64-3.5/fortranobject.h:13:
In file included from /Users/Valyria/anaconda/lib/python3.5/site-packages/numpy/core/include/numpy/arrayobject.h:4:
In file included from /Users/Valyria/anaconda/lib/python3.5/site-packages/numpy/core/include/numpy/ndarrayobject.h:18:
In file included from /Users/Valyria/anaconda/lib/python3.5/site-packages/numpy/core/include/numpy/ndarraytypes.h:1788:
/Users/Valyria/anaconda/lib/python3.5/site-packages/numpy/core/include/numpy/npy_1_7_deprecated_api.h:15:2: warning: "Using deprecated NumPy API, disable it by " "#defining NPY_NO_DEPRECATED_API NPY_1_7_API_VERSION" [-W#warnings]
#warning "Using deprecated NumPy API, disable it by " \
^
/var/folders/4q/g84zdhps5gzbk3t5mfplqjsc0000gn/T/tmpi34fejrm/src.macosx-10.6-x86_64-3.5/wpmodule.c:277:3: error: use of undeclared identifier 'funct_typedef'
funct_typedef funct_cptr;
^
/var/folders/4q/g84zdhps5gzbk3t5mfplqjsc0000gn/T/tmpi34fejrm/src.macosx-10.6-x86_64-3.5/wpmodule.c:293:3: error: use of undeclared identifier 'funct_cptr'; did you mean 'funct_capi'?
funct_cptr = F2PyCapsule_AsVoidPtr(funct_capi);
^~~~~~~~~~
funct_capi
/var/folders/4q/g84zdhps5gzbk3t5mfplqjsc0000gn/T/tmpi34fejrm/src.macosx-10.6-x86_64-3.5/wpmodule.c:273:13: note: 'funct_capi' declared here
PyObject *funct_capi = Py_None;
^
/var/folders/4q/g84zdhps5gzbk3t5mfplqjsc0000gn/T/tmpi34fejrm/src.macosx-10.6-x86_64-3.5/wpmodule.c:295:3: error: use of undeclared identifier 'funct_cptr'; did you mean 'funct_capi'?
funct_cptr = funct;
^~~~~~~~~~
funct_capi
/var/folders/4q/g84zdhps5gzbk3t5mfplqjsc0000gn/T/tmpi34fejrm/src.macosx-10.6-x86_64-3.5/wpmodule.c:273:13: note: 'funct_capi' declared here
PyObject *funct_capi = Py_None;
^
/var/folders/4q/g84zdhps5gzbk3t5mfplqjsc0000gn/T/tmpi34fejrm/src.macosx-10.6-x86_64-3.5/wpmodule.c:295:16: error: use of undeclared identifier 'funct'
funct_cptr = funct;
^
/var/folders/4q/g84zdhps5gzbk3t5mfplqjsc0000gn/T/tmpi34fejrm/src.macosx-10.6-x86_64-3.5/wpmodule.c:298:24: error: use of undeclared identifier 'funct_nofargs'
funct_nofargs_capi = funct_nofargs;
^
/var/folders/4q/g84zdhps5gzbk3t5mfplqjsc0000gn/T/tmpi34fejrm/src.macosx-10.6-x86_64-3.5/wpmodule.c:299:50: error: expected expression
if (create_cb_arglist(funct_capi,funct_xa_capi,#maxnofargs#,#nofoptargs#,&funct_nofargs,&funct_args_capi,"failed in processing argument list for call-back funct.")) {
^
/var/folders/4q/g84zdhps5gzbk3t5mfplqjsc0000gn/T/tmpi34fejrm/src.macosx-10.6-x86_64-3.5/wpmodule.c:313:22: error: use of undeclared identifier 'funct_cptr'; did you mean 'funct_capi'?
(*f2py_func)(funct_cptr,&n);
^~~~~~~~~~
funct_capi
/var/folders/4q/g84zdhps5gzbk3t5mfplqjsc0000gn/T/tmpi34fejrm/src.macosx-10.6-x86_64-3.5/wpmodule.c:273:13: note: 'funct_capi' declared here
PyObject *funct_capi = Py_None;
^
/var/folders/4q/g84zdhps5gzbk3t5mfplqjsc0000gn/T/tmpi34fejrm/src.macosx-10.6-x86_64-3.5/wpmodule.c:313:22: warning: incompatible pointer types passing 'PyObject *' (aka 'struct _object *') to parameter of type 'float *' [-Wincompatible-pointer-types]
(*f2py_func)(funct_cptr,&n);
^~~~~~~~~~
/var/folders/4q/g84zdhps5gzbk3t5mfplqjsc0000gn/T/tmpi34fejrm/src.macosx-10.6-x86_64-3.5/wpmodule.c:332:16: warning: explicitly assigning a variable of type 'PyObject *' (aka 'struct _object *') to itself [-Wself-assign]
funct_capi = funct_capi;
~~~~~~~~~~ ^ ~~~~~~~~~~
/var/folders/4q/g84zdhps5gzbk3t5mfplqjsc0000gn/T/tmpi34fejrm/src.macosx-10.6-x86_64-3.5/wpmodule.c:334:21: warning: explicitly assigning a variable of type 'PyTupleObject *' to itself [-Wself-assign]
funct_args_capi = funct_args_capi;
~~~~~~~~~~~~~~~ ^ ~~~~~~~~~~~~~~~
/var/folders/4q/g84zdhps5gzbk3t5mfplqjsc0000gn/T/tmpi34fejrm/src.macosx-10.6-x86_64-3.5/wpmodule.c:335:5: error: use of undeclared identifier 'funct_nofargs'
funct_nofargs = funct_nofargs_capi;
^
4 warnings and 8 errors generated.
In file included from /var/folders/4q/g84zdhps5gzbk3t5mfplqjsc0000gn/T/tmpi34fejrm/src.macosx-10.6-x86_64-3.5/wpmodule.c:18:
In file included from /var/folders/4q/g84zdhps5gzbk3t5mfplqjsc0000gn/T/tmpi34fejrm/src.macosx-10.6-x86_64-3.5/fortranobject.h:13:
In file included from /Users/Valyria/anaconda/lib/python3.5/site-packages/numpy/core/include/numpy/arrayobject.h:4:
In file included from /Users/Valyria/anaconda/lib/python3.5/site-packages/numpy/core/include/numpy/ndarrayobject.h:18:
In file included from /Users/Valyria/anaconda/lib/python3.5/site-packages/numpy/core/include/numpy/ndarraytypes.h:1788:
/Users/Valyria/anaconda/lib/python3.5/site-packages/numpy/core/include/numpy/npy_1_7_deprecated_api.h:15:2: warning: "Using deprecated NumPy API, disable it by " "#defining NPY_NO_DEPRECATED_API NPY_1_7_API_VERSION" [-W#warnings]
#warning "Using deprecated NumPy API, disable it by " \
^
/var/folders/4q/g84zdhps5gzbk3t5mfplqjsc0000gn/T/tmpi34fejrm/src.macosx-10.6-x86_64-3.5/wpmodule.c:277:3: error: use of undeclared identifier 'funct_typedef'
funct_typedef funct_cptr;
^
/var/folders/4q/g84zdhps5gzbk3t5mfplqjsc0000gn/T/tmpi34fejrm/src.macosx-10.6-x86_64-3.5/wpmodule.c:293:3: error: use of undeclared identifier 'funct_cptr'; did you mean 'funct_capi'?
funct_cptr = F2PyCapsule_AsVoidPtr(funct_capi);
^~~~~~~~~~
funct_capi
/var/folders/4q/g84zdhps5gzbk3t5mfplqjsc0000gn/T/tmpi34fejrm/src.macosx-10.6-x86_64-3.5/wpmodule.c:273:13: note: 'funct_capi' declared here
PyObject *funct_capi = Py_None;
^
/var/folders/4q/g84zdhps5gzbk3t5mfplqjsc0000gn/T/tmpi34fejrm/src.macosx-10.6-x86_64-3.5/wpmodule.c:295:3: error: use of undeclared identifier 'funct_cptr'; did you mean 'funct_capi'?
funct_cptr = funct;
^~~~~~~~~~
funct_capi
/var/folders/4q/g84zdhps5gzbk3t5mfplqjsc0000gn/T/tmpi34fejrm/src.macosx-10.6-x86_64-3.5/wpmodule.c:273:13: note: 'funct_capi' declared here
PyObject *funct_capi = Py_None;
^
/var/folders/4q/g84zdhps5gzbk3t5mfplqjsc0000gn/T/tmpi34fejrm/src.macosx-10.6-x86_64-3.5/wpmodule.c:295:16: error: use of undeclared identifier 'funct'
funct_cptr = funct;
^
/var/folders/4q/g84zdhps5gzbk3t5mfplqjsc0000gn/T/tmpi34fejrm/src.macosx-10.6-x86_64-3.5/wpmodule.c:298:24: error: use of undeclared identifier 'funct_nofargs'
funct_nofargs_capi = funct_nofargs;
^
/var/folders/4q/g84zdhps5gzbk3t5mfplqjsc0000gn/T/tmpi34fejrm/src.macosx-10.6-x86_64-3.5/wpmodule.c:299:50: error: expected expression
if (create_cb_arglist(funct_capi,funct_xa_capi,#maxnofargs#,#nofoptargs#,&funct_nofargs,&funct_args_capi,"failed in processing argument list for call-back funct.")) {
^
/var/folders/4q/g84zdhps5gzbk3t5mfplqjsc0000gn/T/tmpi34fejrm/src.macosx-10.6-x86_64-3.5/wpmodule.c:313:22: error: use of undeclared identifier 'funct_cptr'; did you mean 'funct_capi'?
(*f2py_func)(funct_cptr,&n);
^~~~~~~~~~
funct_capi
/var/folders/4q/g84zdhps5gzbk3t5mfplqjsc0000gn/T/tmpi34fejrm/src.macosx-10.6-x86_64-3.5/wpmodule.c:273:13: note: 'funct_capi' declared here
PyObject *funct_capi = Py_None;
^
/var/folders/4q/g84zdhps5gzbk3t5mfplqjsc0000gn/T/tmpi34fejrm/src.macosx-10.6-x86_64-3.5/wpmodule.c:313:22: warning: incompatible pointer types passing 'PyObject *' (aka 'struct _object *') to parameter of type 'float *' [-Wincompatible-pointer-types]
(*f2py_func)(funct_cptr,&n);
^~~~~~~~~~
/var/folders/4q/g84zdhps5gzbk3t5mfplqjsc0000gn/T/tmpi34fejrm/src.macosx-10.6-x86_64-3.5/wpmodule.c:332:16: warning: explicitly assigning a variable of type 'PyObject *' (aka 'struct _object *') to itself [-Wself-assign]
funct_capi = funct_capi;
~~~~~~~~~~ ^ ~~~~~~~~~~
/var/folders/4q/g84zdhps5gzbk3t5mfplqjsc0000gn/T/tmpi34fejrm/src.macosx-10.6-x86_64-3.5/wpmodule.c:334:21: warning: explicitly assigning a variable of type 'PyTupleObject *' to itself [-Wself-assign]
funct_args_capi = funct_args_capi;
~~~~~~~~~~~~~~~ ^ ~~~~~~~~~~~~~~~
/var/folders/4q/g84zdhps5gzbk3t5mfplqjsc0000gn/T/tmpi34fejrm/src.macosx-10.6-x86_64-3.5/wpmodule.c:335:5: error: use of undeclared identifier 'funct_nofargs'
funct_nofargs = funct_nofargs_capi;
^
4 warnings and 8 errors generated.
error: Command "/usr/bin/clang -Wno-unused-result -Wsign-compare -Wunreachable-code -DNDEBUG -g -fwrapv -O3 -Wall -Wstrict-prototypes -I/Users/Valyria/anaconda/include -arch x86_64 -I/var/folders/4q/g84zdhps5gzbk3t5mfplqjsc0000gn/T/tmpi34fejrm/src.macosx-10.6-x86_64-3.5 -I/Users/Valyria/anaconda/lib/python3.5/site-packages/numpy/core/include -I/Users/Valyria/anaconda/include/python3.5m -c /var/folders/4q/g84zdhps5gzbk3t5mfplqjsc0000gn/T/tmpi34fejrm/src.macosx-10.6-x86_64-3.5/wpmodule.c -o /var/folders/4q/g84zdhps5gzbk3t5mfplqjsc0000gn/T/tmpi34fejrm/var/folders/4q/g84zdhps5gzbk3t5mfplqjsc0000gn/T/tmpi34fejrm/src.macosx-10.6-x86_64-3.5/wpmodule.o" failed with exit status 1
编辑
感谢@DavidW 的回答,代码现在可以工作了,但是如果我尝试从另一个函数调用 fortran 函数“writepy”,“使用未声明的标识符”的错误再次出现。
新的 Fortran 代码是
subroutine writepy(funct,n,r)
implicit none
EXTERNAL :: funct
REAL :: funct
INTEGER :: I,n
intent(in):: n
REAL*8 :: r
intent(out) ::r
r = 1D0
DO I=1,5
write(*,*) 'funct:', funct(I)
r = r + funct(n)
ENDDO
return
end
subroutine call_writepy(funct,n,r)
implicit none
EXTERNAL :: funct
REAL :: funct
INTEGER :: n
intent(inout):: n
REAL*8 :: r
intent(inout) ::r
call writepy(funct,n,r)
return
end
它使用 GFortran 编译,但是当我将它与 Python 一起使用时,我得到:
/var/folders/4q/g84zdhps5gzbk3t5mfplqjsc0000gn/T/tmpe9wq9teg/src.macosx-10.6-x86_64-3.5/wpmodule.c:431:7: warning: variable 'return_value' is used uninitialized whenever 'if' condition is false [-Wsometimes-uninitialized]
if (capi_j>capi_i)
^~~~~~~~~~~~~
/var/folders/4q/g84zdhps5gzbk3t5mfplqjsc0000gn/T/tmpe9wq9teg/src.macosx-10.6-x86_64-3.5/wpmodule.c:446:10: note: uninitialized use occurs here
return return_value;
^~~~~~~~~~~~
/var/folders/4q/g84zdhps5gzbk3t5mfplqjsc0000gn/T/tmpe9wq9teg/src.macosx-10.6-x86_64-3.5/wpmodule.c:431:3: note: remove the 'if' if its condition is always true
if (capi_j>capi_i)
^~~~~~~~~~~~~~~~~~
/var/folders/4q/g84zdhps5gzbk3t5mfplqjsc0000gn/T/tmpe9wq9teg/src.macosx-10.6-x86_64-3.5/wpmodule.c:363:21: note: initialize the variable 'return_value' to silence this warning
float return_value;
^
= 0.0
/var/folders/4q/g84zdhps5gzbk3t5mfplqjsc0000gn/T/tmpe9wq9teg/src.macosx-10.6-x86_64-3.5/wpmodule.c:590:3: error: use of undeclared identifier 'funct_typedef'
funct_typedef funct_cptr;
^
/var/folders/4q/g84zdhps5gzbk3t5mfplqjsc0000gn/T/tmpe9wq9teg/src.macosx-10.6-x86_64-3.5/wpmodule.c:611:3: error: use of undeclared identifier 'funct_cptr'; did you mean 'funct_capi'?
funct_cptr = F2PyCapsule_AsVoidPtr(funct_capi);
^~~~~~~~~~
funct_capi
/var/folders/4q/g84zdhps5gzbk3t5mfplqjsc0000gn/T/tmpe9wq9teg/src.macosx-10.6-x86_64-3.5/wpmodule.c:586:13: note: 'funct_capi' declared here
PyObject *funct_capi = Py_None;
^
/var/folders/4q/g84zdhps5gzbk3t5mfplqjsc0000gn/T/tmpe9wq9teg/src.macosx-10.6-x86_64-3.5/wpmodule.c:613:3: error: use of undeclared identifier 'funct_cptr'; did you mean 'funct_capi'?
funct_cptr = funct;
^~~~~~~~~~
funct_capi
/var/folders/4q/g84zdhps5gzbk3t5mfplqjsc0000gn/T/tmpe9wq9teg/src.macosx-10.6-x86_64-3.5/wpmodule.c:586:13: note: 'funct_capi' declared here
PyObject *funct_capi = Py_None;
^
/var/folders/4q/g84zdhps5gzbk3t5mfplqjsc0000gn/T/tmpe9wq9teg/src.macosx-10.6-x86_64-3.5/wpmodule.c:613:16: error: use of undeclared identifier 'funct'
funct_cptr = funct;
^
/var/folders/4q/g84zdhps5gzbk3t5mfplqjsc0000gn/T/tmpe9wq9teg/src.macosx-10.6-x86_64-3.5/wpmodule.c:616:24: error: use of undeclared identifier 'funct_nofargs'
funct_nofargs_capi = funct_nofargs;
^
/var/folders/4q/g84zdhps5gzbk3t5mfplqjsc0000gn/T/tmpe9wq9teg/src.macosx-10.6-x86_64-3.5/wpmodule.c:617:50: error: expected expression
if (create_cb_arglist(funct_capi,funct_xa_capi,#maxnofargs#,#nofoptargs#,&funct_nofargs,&funct_args_capi,"failed in processing argument list for call-back funct.")) {
^
/var/folders/4q/g84zdhps5gzbk3t5mfplqjsc0000gn/T/tmpe9wq9teg/src.macosx-10.6-x86_64-3.5/wpmodule.c:634:22: error: use of undeclared identifier 'funct_cptr'; did you mean 'funct_capi'?
(*f2py_func)(funct_cptr,&n,&r);
^~~~~~~~~~
funct_capi
/var/folders/4q/g84zdhps5gzbk3t5mfplqjsc0000gn/T/tmpe9wq9teg/src.macosx-10.6-x86_64-3.5/wpmodule.c:586:13: note: 'funct_capi' declared here
PyObject *funct_capi = Py_None;
^
/var/folders/4q/g84zdhps5gzbk3t5mfplqjsc0000gn/T/tmpe9wq9teg/src.macosx-10.6-x86_64-3.5/wpmodule.c:634:22: warning: incompatible pointer types passing 'PyObject *' (aka 'struct _object *') to parameter of type 'float *' [-Wincompatible-pointer-types]
(*f2py_func)(funct_cptr,&n,&r);
^~~~~~~~~~
/var/folders/4q/g84zdhps5gzbk3t5mfplqjsc0000gn/T/tmpe9wq9teg/src.macosx-10.6-x86_64-3.5/wpmodule.c:660:16: warning: explicitly assigning a variable of type 'PyObject *' (aka 'struct _object *') to itself [-Wself-assign]
funct_capi = funct_capi;
~~~~~~~~~~ ^ ~~~~~~~~~~
/var/folders/4q/g84zdhps5gzbk3t5mfplqjsc0000gn/T/tmpe9wq9teg/src.macosx-10.6-x86_64-3.5/wpmodule.c:662:21: warning: explicitly assigning a variable of type 'PyTupleObject *' to itself [-Wself-assign]
funct_args_capi = funct_args_capi;
~~~~~~~~~~~~~~~ ^ ~~~~~~~~~~~~~~~
/var/folders/4q/g84zdhps5gzbk3t5mfplqjsc0000gn/T/tmpe9wq9teg/src.macosx-10.6-x86_64-3.5/wpmodule.c:663:5: error: use of undeclared identifier 'funct_nofargs'
funct_nofargs = funct_nofargs_capi;
^
5 warnings and 8 errors generated.
routsign2map: Confused: function call_writepy has externals ['funct'] but no "use" statement.
sign2map: Confused: external funct is not in lcb_map[].
append_needs: unknown need 'funct'
append_needs: unknown need 'funct'
In file included from /var/folders/4q/g84zdhps5gzbk3t5mfplqjsc0000gn/T/tmpe9wq9teg/src.macosx-10.6-x86_64-3.5/wpmodule.c:18:
In file included from /var/folders/4q/g84zdhps5gzbk3t5mfplqjsc0000gn/T/tmpe9wq9teg/src.macosx-10.6-x86_64-3.5/fortranobject.h:13:
In file included from /Users/Valyria/anaconda/lib/python3.5/site-packages/numpy/core/include/numpy/arrayobject.h:4:
In file included from /Users/Valyria/anaconda/lib/python3.5/site-packages/numpy/core/include/numpy/ndarrayobject.h:18:
In file included from /Users/Valyria/anaconda/lib/python3.5/site-packages/numpy/core/include/numpy/ndarraytypes.h:1788:
/Users/Valyria/anaconda/lib/python3.5/site-packages/numpy/core/include/numpy/npy_1_7_deprecated_api.h:15:2: warning: "Using deprecated NumPy API, disable it by " "#defining NPY_NO_DEPRECATED_API NPY_1_7_API_VERSION" [-W#warnings]
#warning "Using deprecated NumPy API, disable it by " \
^
/var/folders/4q/g84zdhps5gzbk3t5mfplqjsc0000gn/T/tmpe9wq9teg/src.macosx-10.6-x86_64-3.5/wpmodule.c:431:7: warning: variable 'return_value' is used uninitialized whenever 'if' condition is false [-Wsometimes-uninitialized]
if (capi_j>capi_i)
^~~~~~~~~~~~~
/var/folders/4q/g84zdhps5gzbk3t5mfplqjsc0000gn/T/tmpe9wq9teg/src.macosx-10.6-x86_64-3.5/wpmodule.c:446:10: note: uninitialized use occurs here
return return_value;
^~~~~~~~~~~~
/var/folders/4q/g84zdhps5gzbk3t5mfplqjsc0000gn/T/tmpe9wq9teg/src.macosx-10.6-x86_64-3.5/wpmodule.c:431:3: note: remove the 'if' if its condition is always true
if (capi_j>capi_i)
^~~~~~~~~~~~~~~~~~
/var/folders/4q/g84zdhps5gzbk3t5mfplqjsc0000gn/T/tmpe9wq9teg/src.macosx-10.6-x86_64-3.5/wpmodule.c:363:21: note: initialize the variable 'return_value' to silence this warning
float return_value;
^
= 0.0
/var/folders/4q/g84zdhps5gzbk3t5mfplqjsc0000gn/T/tmpe9wq9teg/src.macosx-10.6-x86_64-3.5/wpmodule.c:590:3: error: use of undeclared identifier 'funct_typedef'
funct_typedef funct_cptr;
^
/var/folders/4q/g84zdhps5gzbk3t5mfplqjsc0000gn/T/tmpe9wq9teg/src.macosx-10.6-x86_64-3.5/wpmodule.c:611:3: error: use of undeclared identifier 'funct_cptr'; did you mean 'funct_capi'?
funct_cptr = F2PyCapsule_AsVoidPtr(funct_capi);
^~~~~~~~~~
funct_capi
/var/folders/4q/g84zdhps5gzbk3t5mfplqjsc0000gn/T/tmpe9wq9teg/src.macosx-10.6-x86_64-3.5/wpmodule.c:586:13: note: 'funct_capi' declared here
PyObject *funct_capi = Py_None;
^
/var/folders/4q/g84zdhps5gzbk3t5mfplqjsc0000gn/T/tmpe9wq9teg/src.macosx-10.6-x86_64-3.5/wpmodule.c:613:3: error: use of undeclared identifier 'funct_cptr'; did you mean 'funct_capi'?
funct_cptr = funct;
^~~~~~~~~~
funct_capi
/var/folders/4q/g84zdhps5gzbk3t5mfplqjsc0000gn/T/tmpe9wq9teg/src.macosx-10.6-x86_64-3.5/wpmodule.c:586:13: note: 'funct_capi' declared here
PyObject *funct_capi = Py_None;
^
/var/folders/4q/g84zdhps5gzbk3t5mfplqjsc0000gn/T/tmpe9wq9teg/src.macosx-10.6-x86_64-3.5/wpmodule.c:613:16: error: use of undeclared identifier 'funct'
funct_cptr = funct;
^
/var/folders/4q/g84zdhps5gzbk3t5mfplqjsc0000gn/T/tmpe9wq9teg/src.macosx-10.6-x86_64-3.5/wpmodule.c:616:24: error: use of undeclared identifier 'funct_nofargs'
funct_nofargs_capi = funct_nofargs;
^
/var/folders/4q/g84zdhps5gzbk3t5mfplqjsc0000gn/T/tmpe9wq9teg/src.macosx-10.6-x86_64-3.5/wpmodule.c:617:50: error: expected expression
if (create_cb_arglist(funct_capi,funct_xa_capi,#maxnofargs#,#nofoptargs#,&funct_nofargs,&funct_args_capi,"failed in processing argument list for call-back funct.")) {
^
/var/folders/4q/g84zdhps5gzbk3t5mfplqjsc0000gn/T/tmpe9wq9teg/src.macosx-10.6-x86_64-3.5/wpmodule.c:634:22: error: use of undeclared identifier 'funct_cptr'; did you mean 'funct_capi'?
(*f2py_func)(funct_cptr,&n,&r);
^~~~~~~~~~
funct_capi
/var/folders/4q/g84zdhps5gzbk3t5mfplqjsc0000gn/T/tmpe9wq9teg/src.macosx-10.6-x86_64-3.5/wpmodule.c:586:13: note: 'funct_capi' declared here
PyObject *funct_capi = Py_None;
^
/var/folders/4q/g84zdhps5gzbk3t5mfplqjsc0000gn/T/tmpe9wq9teg/src.macosx-10.6-x86_64-3.5/wpmodule.c:634:22: warning: incompatible pointer types passing 'PyObject *' (aka 'struct _object *') to parameter of type 'float *' [-Wincompatible-pointer-types]
(*f2py_func)(funct_cptr,&n,&r);
^~~~~~~~~~
/var/folders/4q/g84zdhps5gzbk3t5mfplqjsc0000gn/T/tmpe9wq9teg/src.macosx-10.6-x86_64-3.5/wpmodule.c:660:16: warning: explicitly assigning a variable of type 'PyObject *' (aka 'struct _object *') to itself [-Wself-assign]
funct_capi = funct_capi;
~~~~~~~~~~ ^ ~~~~~~~~~~
/var/folders/4q/g84zdhps5gzbk3t5mfplqjsc0000gn/T/tmpe9wq9teg/src.macosx-10.6-x86_64-3.5/wpmodule.c:662:21: warning: explicitly assigning a variable of type 'PyTupleObject *' to itself [-Wself-assign]
funct_args_capi = funct_args_capi;
~~~~~~~~~~~~~~~ ^ ~~~~~~~~~~~~~~~
/var/folders/4q/g84zdhps5gzbk3t5mfplqjsc0000gn/T/tmpe9wq9teg/src.macosx-10.6-x86_64-3.5/wpmodule.c:663:5: error: use of undeclared identifier 'funct_nofargs'
funct_nofargs = funct_nofargs_capi;
^
5 warnings and 8 errors generated.
error: Command "/usr/bin/clang -Wno-unused-result -Wsign-compare -Wunreachable-code -DNDEBUG -g -fwrapv -O3 -Wall -Wstrict-prototypes -I/Users/Valyria/anaconda/include -arch x86_64 -I/var/folders/4q/g84zdhps5gzbk3t5mfplqjsc0000gn/T/tmpe9wq9teg/src.macosx-10.6-x86_64-3.5 -I/Users/Valyria/anaconda/lib/python3.5/site-packages/numpy/core/include -I/Users/Valyria/anaconda/include/python3.5m -c /var/folders/4q/g84zdhps5gzbk3t5mfplqjsc0000gn/T/tmpe9wq9teg/src.macosx-10.6-x86_64-3.5/wpmodule.c -o /var/folders/4q/g84zdhps5gzbk3t5mfplqjsc0000gn/T/tmpe9wq9teg/var/folders/4q/g84zdhps5gzbk3t5mfplqjsc0000gn/T/tmpe9wq9teg/src.macosx-10.6-x86_64-3.5/wpmodule.o" failed with exit status 1
256
【问题讨论】:
-
这至少有一部分只是一个错字——你使用了逗号而不是
::-!f2py intent(in) :: n。我不知道这是否能解决你所有的错误 -
不,输出没有改变