我正在使用pythran,一种pythran到c++编译器http://pythran.readthedocs.io/
在手册页中,TextIOWrapper
但是,试图编译这个简单的文件
文件:mylib.py
#pythran export write_test(str,bool)
#pythran export fake_write(str)
def write_test(fname,r):
if r:
print('writing %s'%fname)
f = open(fname,'w')
#write_line = f.writelines
write_line = f.write
else:
print('NO FILE WILL BE WRITTEN')
write_line = fake_write
for i in range(10):
write_line(str(i) + '\n')
if r:
f.close()
def fake_write(s):
return 0使用命令行
吡喃mylib.py -o mylib.so -O3 -march=native -v
消息失败:
mylib.py:9:21错误:不支持此对象的属性“写”
Pythran版本:0.9.8.post2
Python:3.8.5
使用Ubuntu 20.04.1 LTS
发布于 2021-01-05 05:28:20
在当前版本的pythran中似乎有一个bug。它在pythran的开发版本(0.9.9.dev)中得到了修正。
与使用指向f.write函数的指针不同,我们可以定义一个不返回的lambda来完成任务并解决问题:
#pythran export write_test(str,bool)
#pythran export fake_write(str)
def write_test(fname,r):
if r:
print('writing %s'%fname)
f = open(fname,'w')
#write_line = f.writelines
write_line = lambda s: f.write(s)
else:
print('NO FILE WILL BE WRITTEN')
write_line = fake_write
for i in range(10):
write_line(str(i) + '\n')
if r:
f.close()
def fake_write(s):
return None这种修改是由github错误报告页面中的开发人员建议的。
https://stackoverflow.com/questions/65555435
复制相似问题