无法使用f2py编译功能中的fortran代码

时间:2019-02-03 15:05:48

标签: python fortran f2py

我有以下Fortran代码:

Sub Main()
    Console.OutputEncoding = System.Text.Encoding.Unicode
    Console.WriteLine(ChrW(&H26C0))
    Console.ReadKey()
End Sub

我不想使用命令 !routines.f90 module mymodule contains function add(a, b) real(8), intent(in):: a real(8), intent(in):: b real(8) :: add add = a + b end function end module ,而是要从python脚本中进行编译,如下所示:

python -m numpy.f2py -m routines -c routines.f90

但是当我尝试执行此脚本时:#main.py import numpy as np import numpy.f2py as f2py with open(r'routines.f90', 'r') as f: source = f.read() f2py.compile(source, modulename='routines') print('OK') ,我收到以下错误:

python main.py

你能告诉我问题是什么吗?

1 个答案:

答案 0 :(得分:3)

open(r'routines.f90', 'r')打开文件以读取 text (又名str),但是,显然f2py.compile要求其第一个参数的类型为{{1 }}。为此,请以二进制模式打开文件:

bytes

(此外,open(r'routines.f90', 'rb') 中不需要第一个r,尽管变化不大,您也可以执行r'routines...')。