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 之前的版本。