我正在尝试安装一个 Python 包,该包依赖于使用 f2py 从 Fortran 90 构建的扩展,但出现以下错误:
error: f90 not supported by GnuFCompiler needed for source_file.f90
我同时安装了 gfortran 和 g77,出了什么问题?
我正在尝试安装一个 Python 包,该包依赖于使用 f2py 从 Fortran 90 构建的扩展,但出现以下错误:
error: f90 not supported by GnuFCompiler needed for source_file.f90
我同时安装了 gfortran 和 g77,出了什么问题?
默认情况下,f2py 首选 GNU Fortran 77 编译器--fcompiler=gnu而不是 GNU Fortran 95 编译器--fcompiler=gnu95。如果您同时拥有g77和gfortran在您的路径上,那么 f2py 将使用g77,它无法构建 Fortran 90 扩展。
如果您希望 numpy 使用gfortranover g77,您可以--fcompiler=gnu95在构建代码时将标志传递给 setup.py,或者您可以从以下位置修改您的 numpy 安装numpy/distutils/fcompiler/__init__.py文件 [*]:
_default_compilers = (
# sys.platform mappings
('win32', ('gnu','intelv','absoft','compaqv','intelev','gnu95','g95',
'intelvem', 'intelem')),
('cygwin.*', ('gnu','intelv','absoft','compaqv','intelev','gnu95','g95')),
('linux.*', ('gnu','intel','lahey','pg','absoft','nag','vast','compaq',
'intele','intelem','gnu95','g95','pathf95')),
('darwin.*', ('nag', 'absoft', 'ibm', 'intel', 'gnu', 'gnu95', 'g95', 'pg')),
('sunos.*', ('sun','gnu','gnu95','g95')),
('irix.*', ('mips','gnu','gnu95',)),
('aix.*', ('ibm','gnu','gnu95',)),
# os.name mappings
('posix', ('gnu','gnu95',)),
('nt', ('gnu','gnu95',)),
('mac', ('gnu','gnu95','pg')),
)
到
_default_compilers = (
# sys.platform mappings
('win32', ('gnu95','intelv','absoft','compaqv','intelev','gnu','g95',
'intelvem', 'intelem')),
('cygwin.*', ('gnu95','intelv','absoft','compaqv','intelev','gnu','g95')),
('linux.*', ('gnu95','intel','lahey','pg','absoft','nag','vast','compaq',
'intele','intelem','gnu','g95','pathf95')),
('darwin.*', ('nag', 'absoft', 'ibm', 'intel', 'gnu95', 'gnu', 'g95', 'pg')),
('sunos.*', ('sun','gnu95','gnu','g95')),
('irix.*', ('mips','gnu95','gnu',)),
('aix.*', ('ibm','gnu95','gnu',)),
# os.name mappings
('posix', ('gnu95','gnu',)),
('nt', ('gnu95','gnu',)),
('mac', ('gnu95','gnu','pg')),
)
这将使 gfortran 优先于 g77,允许您使用 f2py 为您的 Python 代码构建 Fortran 90 扩展。
[*]如果您以前从未修改过已安装的 Python 模块,您可能会想知道在哪里可以找到它。在 Python 提示符下:
import numpy; print numpy.__file__