由于 f2py 未正确安装而导致的错误:我该如何纠正?

由于 f2py 未正确安装而导致的错误:我该如何纠正?

http://software-lisc.fbk.eu/bdg/ 我正在尝试运行 BdG-TMAT 代码。这里的文件夹包含 Fortran 和 python 文件,因为主运行文件 BDG_K.py 使用了一些 fortran 函数。因此,为了运行 fortran 代码,我使用转换器 f2py,它将 tmatf.f90 转换为 tmatf.so。f2py 随 numpy 自动安装。从 BdG-Tmat 的 make 中,由于 f2py 的问题,我收到以下错误:

- f2py -lgsl -llapack -lcblas -c potsub.f90 potsubi.o -m potsub 
Traceback (most recent call last):
  File "/usr/local/bin/f2py", line 3, in <module>
    import f2py2e
  File "/usr/local/lib/python2.7/dist-packages/f2py2e/__init__.py", line 10, in <module>
    import f2py2e
  File "/usr/local/lib/python2.7/dist-packages/f2py2e/f2py2e.py", line 26, in <module>
    import crackfortran
  File "/usr/local/lib/python2.7/dist-packages/f2py2e/crackfortran.py", line 1588
    as = b['args']
     ^
SyntaxError: invalid syntax
make: *** [potsub.so] Error 1

我不确定如何纠正这个问题,虽然我已经检查过 crackfortran.py 请帮忙。

提前致谢。

答案1

此错误是由于as在 Python 2.6 中成为关键字而导致的(另请参阅http://bugs.python.org/issue8031)。当前版本的numpy已经不再包含这个bug:

https://github.com/numpy/numpy/blob/master/numpy/f2py/crackfortran.py

(假定的)有问题的行已移至第 2126 行,现在显示为args = block['args']

因此解决方案是获取最新版本的 numpy 或 Python 2.6 之前的版本。

相关内容