gpt4 book ai didi

python - 无法使用 f2py 编译函数中的 fortran 代码

转载 作者:行者123 更新时间:2023-11-30 21:59:44 25 4
gpt4 key购买 nike

我有以下 Fortran 代码:

    !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 -mroutines -croutines.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 我收到以下错误:

Traceback (most recent call last):
File "main.py", line 7, in <module>
f2py.compile(source, modulename='routines')
File "/home/user1/anaconda3/lib/python3.6/site-packages/numpy/f2py/__init__.py", line 59, in compile
f.write(source)
File "/home/user1/anaconda3/lib/python3.6/tempfile.py", line 485, in func_wrapper
return func(*args, **kwargs)
TypeError: a bytes-like object is required, not 'str'

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

最佳答案

open(r'routines.f90', 'r') 打开您的文件以读取文本(又名str),但是,显然,f2py.compile 要求其第一个参数为字节类型。为了满足这一点,请以二进制模式打开文件:

open(r'routines.f90', 'rb')

(另外,r'routines...'中不需要第一个r,您可以只执行'routines.f90',虽然变化不大)。

关于python - 无法使用 f2py 编译函数中的 fortran 代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54504186/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com