2016-03-12 166 views
0

我试图运行f2py example来创建编译扩展module¶:设置Fortran编译器在f2py

# import os 
# os.environ["CC"] = "gcc" 
# os.environ["CXX"] = "g++" 

# Using post-0.2.2 scipy_distutils to display fortran compilers 
from scipy_distutils.fcompiler import new_fcompiler 
compiler = new_fcompiler() # or new_fcompiler(compiler='intel') 
compiler.dump_properties() 

#Generate add.f wrapper 
from numpy import f2py 
with open("add.f") as sourcefile: 
    sourcecode = sourcefile.read() 
    print 'Fortran code' 
    print sourcecode 

# f2py.compile(sourcecode, modulename='add', extra_args = '--compiler=gnu --fcompiler=gnu') 
f2py.compile(sourcecode, modulename='add', extra_args = '--fcompiler=gfortran') 
# f2py.compile(sourcecode, modulename='add') 

import add 

但是,代码不起作用。我相信这是因为它没有使用安装的编译器(操作系统是Ubuntu 12.04)。但是,尽管使用了“--fcompile”参数或更改了“CC”和“CXX”条目,但它仍然不能正常工作....

这是完整的错误日志。欢迎任何建议:

Could not locate executable g77 
Could not locate executable f77 
customize GnuFCompiler 
Could not locate executable ifort 
Could not locate executable ifc 
Could not locate executable efort 
Could not locate executable efc 
Could not locate executable ifort 
customize IntelFCompiler 
customize LaheyFCompiler 
customize PGroupFCompiler 
customize AbsoftFCompiler 
customize NAGFCompiler 
customize VastFCompiler 
customize GnuFCompiler 
customize CompaqFCompiler 
customize IntelItaniumFCompiler 
customize G95FCompiler 
customize GnuFCompiler 
GnuFCompiler instance properties: 
    archiver  = ['ar', '-cr'] 
    compile_switch = '-c' 
    compiler_f77 = ['f77', '-Wall', '-fno-second-underscore'] 
    compiler_f90 = None 
    compiler_fix = None 
    libraries  = [] 
    library_dirs = [] 
    linker_so  = ['f77', '-Wall'] 
    object_switch = '-o ' 
    ranlib   = ['ranlib'] 
    version_cmd  = ['f77', '--version'] 
Fortran code 
C 
     SUBROUTINE ZADD(A,B,C,N) 
C 
     DOUBLE COMPLEX A(*) 
     DOUBLE COMPLEX B(*) 
     DOUBLE COMPLEX C(*) 
     INTEGER N 
     DO 20 J = 1, N 
     C(J) = A(J)+B(J) 
20 CONTINUE 
     END 

Unknown vendor: "gfortran" 
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 "add" sources 
f2py options: [] 
f2py:> /tmp/tmpNKECn3/src.linux-x86_64-2.7/addmodule.c 
creating /tmp/tmpNKECn3/src.linux-x86_64-2.7 
Reading fortran codes... 
    Reading file '/tmp/tmpi2WwBV.f' (format:fix,strict) 
Post-processing... 
    Block: add 
      Block: zadd 
Post-processing (stage 2)... 
Building modules... 
    Building module "add"... 
     Constructing wrapper function "zadd"... 
getarrdims:warning: assumed shape array, using 0 instead of '*' 
getarrdims:warning: assumed shape array, using 0 instead of '*' 
getarrdims:warning: assumed shape array, using 0 instead of '*' 
      zadd(a,b,c,n) 
    Wrote C/API module "add" to file "/tmp/tmpNKECn3/src.linux-x86_64-2.7/addmodule.c" 
    adding '/tmp/tmpNKECn3/src.linux-x86_64-2.7/fortranobject.c' to sources. 
    adding '/tmp/tmpNKECn3/src.linux-x86_64-2.7' to include_dirs. 
copying /usr/local/lib/python2.7/dist-packages/numpy/f2py/src/fortranobject.c -> /tmp/tmpNKECn3/src.linux-x86_64-2.7 
copying /usr/local/lib/python2.7/dist-packages/numpy/f2py/src/fortranobject.h -> /tmp/tmpNKECn3/src.linux-x86_64-2.7 
build_src: building npy-pkg config files 
running build_ext 
customize UnixCCompiler 
customize UnixCCompiler using build_ext 
customize Gnu95FCompiler 
Found executable /usr/bin/gfortran 
Found executable /home/vital/Iraf/unix/hlib/f77.sh 
Found executable /usr/bin/ranlib 
customize Gnu95FCompiler using build_ext 
building 'add' extension 
compiling C sources 
C compiler: gfortran -fno-strict-aliasing -DNDEBUG -g -fwrapv -O2 -Wall -Wstrict-prototypes -fPIC 

creating /tmp/tmpNKECn3/tmp 
creating /tmp/tmpNKECn3/tmp/tmpNKECn3 
creating /tmp/tmpNKECn3/tmp/tmpNKECn3/src.linux-x86_64-2.7 
compile options: '-I/tmp/tmpNKECn3/src.linux-x86_64-2.7 -I/usr/local/lib/python2.7/dist-packages/numpy/core/include -I/usr/include/python2.7 -c' 
gfortran: /tmp/tmpNKECn3/src.linux-x86_64-2.7/addmodule.c 
In file included from /usr/local/lib/python2.7/dist-packages/numpy/core/include/numpy/ndarraytypes.h:1781:0, 
       from /usr/local/lib/python2.7/dist-packages/numpy/core/include/numpy/ndarrayobject.h:18, 
       from /usr/local/lib/python2.7/dist-packages/numpy/core/include/numpy/arrayobject.h:4, 
       from /tmp/tmpNKECn3/src.linux-x86_64-2.7/fortranobject.h:13, 
       from /tmp/tmpNKECn3/src.linux-x86_64-2.7/addmodule.c:19: 
/usr/local/lib/python2.7/dist-packages/numpy/core/include/numpy/npy_1_7_deprecated_api.h:15:2: warning: #warning "Using deprecated NumPy API, disable it by " "#defining NPY_NO_DEPRECATED_API NPY_1_7_API_VERSION" [-Wcpp] 
#warning "Using deprecated NumPy API, disable it by " \ 
^
/tmp/tmpNKECn3/src.linux-x86_64-2.7/addmodule.c:105:12: warning: ‘f2py_size’ defined but not used [-Wunused-function] 
static int f2py_size(PyArrayObject* var, ...) 
      ^
gfortran: /tmp/tmpNKECn3/src.linux-x86_64-2.7/fortranobject.c 
In file included from /usr/local/lib/python2.7/dist-packages/numpy/core/include/numpy/ndarraytypes.h:1781:0, 
       from /usr/local/lib/python2.7/dist-packages/numpy/core/include/numpy/ndarrayobject.h:18, 
       from /usr/local/lib/python2.7/dist-packages/numpy/core/include/numpy/arrayobject.h:4, 
       from /tmp/tmpNKECn3/src.linux-x86_64-2.7/fortranobject.h:13, 
       from /tmp/tmpNKECn3/src.linux-x86_64-2.7/fortranobject.c:2: 
/usr/local/lib/python2.7/dist-packages/numpy/core/include/numpy/npy_1_7_deprecated_api.h:15:2: warning: #warning "Using deprecated NumPy API, disable it by " "#defining NPY_NO_DEPRECATED_API NPY_1_7_API_VERSION" [-Wcpp] 
#warning "Using deprecated NumPy API, disable it by " \ 
^
compiling Fortran sources 
Fortran f77 compiler: /home/vital/Iraf/unix/hlib//f77.sh -Wall -g -ffixed-form -fno-second-underscore -fPIC -O3 -funroll-loops 
Fortran f90 compiler: /usr/bin/gfortran -Wall -g -fno-second-underscore -fPIC -O3 -funroll-loops 
Fortran fix compiler: /usr/bin/gfortran -Wall -g -ffixed-form -fno-second-underscore -Wall -g -fno-second-underscore -fPIC -O3 -funroll-loops 
compile options: '-I/tmp/tmpNKECn3/src.linux-x86_64-2.7 -I/usr/local/lib/python2.7/dist-packages/numpy/core/include -I/usr/include/python2.7 -c' 
f77.sh:f77: /tmp/tmpi2WwBV.f 
Cannot open file tmpi2WwBV.f 
gcc: error: tmpi2WwBV.c: No such file or directory 
gcc: fatal error: no input files 
compilation terminated. 
Cannot open file tmpi2WwBV.f 
gcc: error: tmpi2WwBV.c: No such file or directory 
gcc: fatal error: no input files 
compilation terminated. 
error: Command "/home/vital/Iraf/unix/hlib//f77.sh -Wall -g -ffixed-form -fno-second-underscore -fPIC -O3 -funroll-loops -I/tmp/tmpNKECn3/src.linux-x86_64-2.7 -I/usr/local/lib/python2.7/dist-packages/numpy/core/include -I/usr/include/python2.7 -c -c /tmp/tmpi2WwBV.f -o /tmp/tmpNKECn3/tmp/tmpi2WwBV.o" failed with exit status 4 
Traceback (most recent call last): 
    File "/home/vital/git/pyResources/pyResources/Tutorials/test_f2py.py", line 21, in <module> 
    import add 
ImportError: No module named add 

P.S. Iraf是一个天文软件,不是编译器。

编辑1:

使用正确的进口由jthomas的建议,我得到一个较短的错误,但它仍然是试图使用脚本在伊拉克空军文件夹中。这是使用代码完整的错误消息:

Gnu95FCompiler instance properties: 
    compile_switch = '-c' 
    libraries  = [] 
    library_dirs = [] 
    object_switch = '-o ' 
Fortran code 
C 
     SUBROUTINE ZADD(A,B,C,N) 
C 
     DOUBLE COMPLEX A(*) 
     DOUBLE COMPLEX B(*) 
     DOUBLE COMPLEX C(*) 
     INTEGER N 
     DO 20 J = 1, N 
     C(J) = A(J)+B(J) 
20 CONTINUE 
     END 

Unknown vendor: "gfortran" 
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 "add" sources 
f2py options: [] 
f2py:> /tmp/tmp_KRxI5/src.linux-x86_64-2.7/addmodule.c 
creating /tmp/tmp_KRxI5/src.linux-x86_64-2.7 
Reading fortran codes... 
    Reading file '/tmp/tmph5mvme.f' (format:fix,strict) 
Post-processing... 
    Block: add 
      Block: zadd 
Post-processing (stage 2)... 
Building modules... 
    Building module "add"... 
     Constructing wrapper function "zadd"... 
getarrdims:warning: assumed shape array, using 0 instead of '*' 
getarrdims:warning: assumed shape array, using 0 instead of '*' 
getarrdims:warning: assumed shape array, using 0 instead of '*' 
      zadd(a,b,c,n) 
    Wrote C/API module "add" to file "/tmp/tmp_KRxI5/src.linux-x86_64-2.7/addmodule.c" 
    adding '/tmp/tmp_KRxI5/src.linux-x86_64-2.7/fortranobject.c' to sources. 
    adding '/tmp/tmp_KRxI5/src.linux-x86_64-2.7' to include_dirs. 
copying /usr/local/lib/python2.7/dist-packages/numpy/f2py/src/fortranobject.c -> /tmp/tmp_KRxI5/src.linux-x86_64-2.7 
copying /usr/local/lib/python2.7/dist-packages/numpy/f2py/src/fortranobject.h -> /tmp/tmp_KRxI5/src.linux-x86_64-2.7 
build_src: building npy-pkg config files 
running build_ext 
customize UnixCCompiler 
customize UnixCCompiler using build_ext 
customize Gnu95FCompiler 
Found executable /usr/bin/gfortran 
Found executable /home/vital/Iraf/unix/hlib/f77.sh 
Found executable /usr/bin/ranlib 
customize Gnu95FCompiler using build_ext 
building 'add' extension 
compiling C sources 
C compiler: gcc -fno-strict-aliasing -DNDEBUG -g -fwrapv -O2 -Wall -Wstrict-prototypes -fPIC 

creating /tmp/tmp_KRxI5/tmp 
creating /tmp/tmp_KRxI5/tmp/tmp_KRxI5 
creating /tmp/tmp_KRxI5/tmp/tmp_KRxI5/src.linux-x86_64-2.7 
compile options: '-I/tmp/tmp_KRxI5/src.linux-x86_64-2.7 -I/usr/local/lib/python2.7/dist-packages/numpy/core/include -I/usr/include/python2.7 -c' 
gcc: /tmp/tmp_KRxI5/src.linux-x86_64-2.7/addmodule.c 
In file included from /usr/local/lib/python2.7/dist-packages/numpy/core/include/numpy/ndarraytypes.h:1781:0, 
       from /usr/local/lib/python2.7/dist-packages/numpy/core/include/numpy/ndarrayobject.h:18, 
       from /usr/local/lib/python2.7/dist-packages/numpy/core/include/numpy/arrayobject.h:4, 
       from /tmp/tmp_KRxI5/src.linux-x86_64-2.7/fortranobject.h:13, 
       from /tmp/tmp_KRxI5/src.linux-x86_64-2.7/addmodule.c:19: 
/usr/local/lib/python2.7/dist-packages/numpy/core/include/numpy/npy_1_7_deprecated_api.h:15:2: warning: #warning "Using deprecated NumPy API, disable it by " "#defining NPY_NO_DEPRECATED_API NPY_1_7_API_VERSION" [-Wcpp] 
#warning "Using deprecated NumPy API, disable it by " \ 
^
/tmp/tmp_KRxI5/src.linux-x86_64-2.7/addmodule.c:105:12: warning: ‘f2py_size’ defined but not used [-Wunused-function] 
static int f2py_size(PyArrayObject* var, ...) 
      ^
gcc: /tmp/tmp_KRxI5/src.linux-x86_64-2.7/fortranobject.c 
In file included from /usr/local/lib/python2.7/dist-packages/numpy/core/include/numpy/ndarraytypes.h:1781:0, 
       from /usr/local/lib/python2.7/dist-packages/numpy/core/include/numpy/ndarrayobject.h:18, 
       from /usr/local/lib/python2.7/dist-packages/numpy/core/include/numpy/arrayobject.h:4, 
       from /tmp/tmp_KRxI5/src.linux-x86_64-2.7/fortranobject.h:13, 
       from /tmp/tmp_KRxI5/src.linux-x86_64-2.7/fortranobject.c:2: 
/usr/local/lib/python2.7/dist-packages/numpy/core/include/numpy/npy_1_7_deprecated_api.h:15:2: warning: #warning "Using deprecated NumPy API, disable it by " "#defining NPY_NO_DEPRECATED_API NPY_1_7_API_VERSION" [-Wcpp] 
#warning "Using deprecated NumPy API, disable it by " \ 
^
compiling Fortran sources 
Fortran f77 compiler: /home/vital/Iraf/unix/hlib//f77.sh -Wall -g -ffixed-form -fno-second-underscore -fPIC -O3 -funroll-loops 
Fortran f90 compiler: /usr/bin/gfortran -Wall -g -fno-second-underscore -fPIC -O3 -funroll-loops 
Fortran fix compiler: /usr/bin/gfortran -Wall -g -ffixed-form -fno-second-underscore -Wall -g -fno-second-underscore -fPIC -O3 -funroll-loops 
compile options: '-I/tmp/tmp_KRxI5/src.linux-x86_64-2.7 -I/usr/local/lib/python2.7/dist-packages/numpy/core/include -I/usr/include/python2.7 -c' 
f77.sh:f77: /tmp/tmph5mvme.f 
Cannot open file tmph5mvme.f 
gcc: error: tmph5mvme.c: No such file or directory 
gcc: fatal error: no input files 
compilation terminated. 
Cannot open file tmph5mvme.f 
gcc: error: tmph5mvme.c: No such file or directory 
gcc: fatal error: no input files 
compilation terminated. 
error: Command "/home/vital/Iraf/unix/hlib//f77.sh -Wall -g -ffixed-form -fno-second-underscore -fPIC -O3 -funroll-loops -I/tmp/tmp_KRxI5/src.linux-x86_64-2.7 -I/usr/local/lib/python2.7/dist-packages/numpy/core/include -I/usr/include/python2.7 -c -c /tmp/tmph5mvme.f -o /tmp/tmp_KRxI5/tmp/tmph5mvme.o" failed with exit status 4 
Traceback (most recent call last): 
    File "/home/vital/git/pyResources/pyResources/Tutorials/test_f2py.py", line 42, in <module> 
    import add 
ImportError: No module named add 

编辑2:当改变扩展.F90和限定Fortran编译器位置(使用whereis)我得到以下错误:

Gnu95FCompiler instance properties: 
    compile_switch = '-c' 
    libraries  = [] 
    library_dirs = [] 
    object_switch = '-o ' 
Fortran code 
C 
     SUBROUTINE ZADD(A,B,C,N) 
C 
     DOUBLE COMPLEX A(*) 
     DOUBLE COMPLEX B(*) 
     DOUBLE COMPLEX C(*) 
     INTEGER N 
     DO 20 J = 1, N 
     C(J) = A(J)+B(J) 
20 CONTINUE 
     END 

Unknown vendor: "/usr/bin/gfortran" 
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 "add" sources 
f2py options: [] 
f2py:> /tmp/tmpHgqM4n/src.linux-x86_64-2.7/addmodule.c 
creating /tmp/tmpHgqM4n/src.linux-x86_64-2.7 
Reading fortran codes... 
    Reading file '/tmp/tmpiLO46g.f' (format:fix,strict) 
Post-processing... 
    Block: add 
      Block: zadd 
Post-processing (stage 2)... 
Building modules... 
    Building module "add"... 
     Constructing wrapper function "zadd"... 
getarrdims:warning: assumed shape array, using 0 instead of '*' 
getarrdims:warning: assumed shape array, using 0 instead of '*' 
getarrdims:warning: assumed shape array, using 0 instead of '*' 
      zadd(a,b,c,n) 
    Wrote C/API module "add" to file "/tmp/tmpHgqM4n/src.linux-x86_64-2.7/addmodule.c" 
    adding '/tmp/tmpHgqM4n/src.linux-x86_64-2.7/fortranobject.c' to sources. 
    adding '/tmp/tmpHgqM4n/src.linux-x86_64-2.7' to include_dirs. 
copying /usr/local/lib/python2.7/dist-packages/numpy/f2py/src/fortranobject.c -> /tmp/tmpHgqM4n/src.linux-x86_64-2.7 
copying /usr/local/lib/python2.7/dist-packages/numpy/f2py/src/fortranobject.h -> /tmp/tmpHgqM4n/src.linux-x86_64-2.7 
build_src: building npy-pkg config files 
running build_ext 
customize UnixCCompiler 
customize UnixCCompiler using build_ext 
don't know how to compile Fortran code on platform 'posix' with '/usr/bin/gfortran' compiler. Supported compilers are: g95,compaq,none,intele,ibm,gnu,mips,lahey,nag,pathf95,intelem,gnu95,intelv,intelvem,absoft,intelev,pg,sun,hpux,vast,intel) 
warning: build_ext: f77_compiler=/usr/bin/gfortran is not available. 

building 'add' extension 
error: extension 'add' has Fortran sources but no Fortran compiler found 

编辑3:

使用参数:

f2py.compile(sourcecode, modulename='add', extra_args = '-c --help-fcompiler') 

我得到以下outpu t:

Gnu95FCompiler instance properties: 
    archiver  = ['/usr/bin/gfortran', '-cr'] 
    compile_switch = '-c' 
    compiler_f77 = ['/home/vital/Iraf/unix/hlib//f77.sh', '-Wall', '-g', '- 
        ffixed-form', '-fno-second-underscore', '-fPIC', '-O3', '- 
        funroll-loops'] 
    compiler_f90 = ['/usr/bin/gfortran', '-Wall', '-g', '-fno-second- 
        underscore', '-fPIC', '-O3', '-funroll-loops'] 
    compiler_fix = ['/usr/bin/gfortran', '-Wall', '-g', '-ffixed-form', '- 
        fno-second-underscore', '-Wall', '-g', '-fno-second- 
        underscore', '-fPIC', '-O3', '-funroll-loops'] 
    libraries  = ['gfortran'] 
    library_dirs = [] 
    linker_exe  = ['/usr/bin/gfortran', '-Wall', '-Wall'] 
    linker_so  = ['/usr/bin/gfortran', '-Wall', '-g', '-Wall', '-g', '- 
        shared'] 
    object_switch = '-o ' 
    ranlib   = ['/usr/bin/ranlib'] 
    version   = LooseVersion ('4.8') 
    version_cmd  = ['/usr/bin/gfortran', '-dumpversion'] 
Traceback (most recent call last): 
    File "<string>", line 1, in <module> 
    File "/usr/local/lib/python2.7/dist-packages/numpy/f2py/f2py2e.py", line 648, in main 
    run_compile() 
    File "/usr/local/lib/python2.7/dist-packages/numpy/f2py/f2py2e.py", line 633, in run_compile 
    setup(ext_modules=[ext]) 
    File "/usr/local/lib/python2.7/dist-packages/numpy/distutils/core.py", line 169, in setup 
    return old_setup(**new_attr) 
    File "/usr/lib/python2.7/distutils/core.py", line 137, in setup 
    ok = dist.parse_command_line() 
    File "/usr/lib/python2.7/distutils/dist.py", line 467, in parse_command_line 
    args = self._parse_command_opts(parser, args) 
    File "/usr/lib/python2.7/distutils/dist.py", line 576, in _parse_command_opts 
    func() 
    File "/usr/local/lib/python2.7/dist-packages/numpy/distutils/command/config_compiler.py", line 15, in show_fortran_compilers 
    show_fcompilers(dist) 
    File "/usr/local/lib/python2.7/dist-packages/numpy/distutils/fcompiler/__init__.py", line 889, in show_fcompilers 
    c.customize(dist) 
    File "/usr/local/lib/python2.7/dist-packages/numpy/distutils/fcompiler/__init__.py", line 502, in customize 
    get_flags('opt', oflags) 
    File "/usr/local/lib/python2.7/dist-packages/numpy/distutils/fcompiler/__init__.py", line 493, in get_flags 
    flags.extend(getattr(self.flag_vars, tag)) 
    File "/usr/local/lib/python2.7/dist-packages/numpy/distutils/environment.py", line 39, in __getattr__ 
    return self._get_var(name, conf_desc) 
    File "/usr/local/lib/python2.7/dist-packages/numpy/distutils/environment.py", line 53, in _get_var 
    var = self._hook_handler(name, hook) 
    File "/usr/local/lib/python2.7/dist-packages/numpy/distutils/fcompiler/__init__.py", line 700, in _environment_hook 
    return hook() 
    File "/usr/local/lib/python2.7/dist-packages/numpy/distutils/fcompiler/gnu.py", line 206, in get_flags_opt 
    v = self.get_version() 
    File "/usr/local/lib/python2.7/dist-packages/numpy/distutils/fcompiler/__init__.py", line 432, in get_version 
    version = CCompiler.get_version(self, force=force, ok_status=ok_status) 
    File "/usr/local/lib/python2.7/dist-packages/numpy/distutils/ccompiler.py", line 491, in CCompiler_get_version 
    version = matcher(output) 
    File "/usr/local/lib/python2.7/dist-packages/numpy/distutils/fcompiler/gnu.py", line 79, in version_match 
    v = self.gnu_version_match(version_string) 
    File "/usr/local/lib/python2.7/dist-packages/numpy/distutils/fcompiler/gnu.py", line 76, in gnu_version_match 
    raise ValueError(err + version_string) 
ValueError: A valid Fortran version was not found in this string: 
invalid parameter -dumpversion 
+0

'f2py -c --help-fcompiler'返回什么?寻找“找到的Fortran编译器”。 – unutbu

+0

@unutbu感谢您的关注我在编辑3中添加了结果 – Delosari

+0

当您从命令行运行'f2py -c --help-fcompiler'时,您会得到什么?是否有必要从Python脚本中运行'f2py'?或者你只是想以任何方式编译'add'模块? – unutbu

回答

1

%的tutorial docs,使用f2py一个简单的方法是在命令行

f2py -c -m add add.f 

这将创建模块文件add.so(或add.pyd,视操作系统而定),它可以运行导入到Python脚本与

import add 

提供add.so是在sys.path中列出的目录中。

1

f2py现在作为numpy的一部分被维护。改变你的例子如下编译就好了。

# import os 
# os.environ["CC"] = "gcc" 
# os.environ["CXX"] = "g++" 

# Using post-0.2.2 scipy_distutils to display fortran compilers 
from numpy.distutils.fcompiler import new_fcompiler 
compiler = new_fcompiler() # or new_fcompiler(compiler='intel') 
compiler.dump_properties() 

#Generate add.f wrapper 
from numpy import f2py 
with open("add.f") as sourcefile: 
    sourcecode = sourcefile.read() 
    print 'Fortran code' 
    print sourcecode 

# f2py.compile(sourcecode, modulename='add', extra_args = '--compiler=gnu --fcompiler=g$ 
f2py.compile(sourcecode, modulename='add', extra_args = '--fcompiler=gfortran') 
# f2py.compile(sourcecode, modulename='add') 

import add 
+0

非常感谢您的回复:我使用了导入,但仍然收到非常类似的错误...它试图将IRAF脚本用作编译器。你有任何建议吗?我在问题 – Delosari

+0

中包含了新的错误信息我从来没有使用过IRAF,但是从错误信息中,并且在线查看时,它似乎包含一个Fortran 77编译器,并且您的路径指向该编译器以编译Fortran 77.由于程序可以使用后来的Fortran版本编译,尝试将add.f的扩展名从.f更改为.f90。您将需要更改文件本身的扩展名以及它在.py文件中的引用。另外,为了让你编译的程序可用,我认为你需要对它进行一些修改,但也许至少在编译完成后,这可能会更好地解决另一个问题。 – jthomas

+0

再次感谢您的时间...我已经尝试过您的代码,但是使用f90扩展名,并且仍然收到相同的错误...当我尝试给出编译器的完整地址时,有趣的事情是:--fcompiler =/usr/bin/gfortran我得到这个错误:“不知道如何用'/ usr/bin/gfortran'编译器在平台'posix'上编译Fortran代码。” “警告:build_ext:f77_compiler =/usr/bin/gfortran不可用。” – Delosari