我想从我的(yap) prolog脚本中运行一个(python3)进程,并将它的输出格式化为整数列表,例如[1,2,3,4,5,6]。
我就是这样做的:
process_create(path(python3),
['my_script.py', MyParam],
[stdout(pipe(Out))]),
read(Out, OutputList),
close(Out).但是,它在读/2谓词时失败,错误如下:
PL_unify_term: PL_int64 not supported
Exception ignored in: <_io.TextIOWrapper name='<stdout>' mode='w' encoding='UTF-8'>
BrokenPipeError: [Errno 32] Broken pipe我确信我能够正确地运行这个过程,因为当[stdout(std)]参数给process_create时,程序会按预期输出[1,2,3,4,5,6]。
奇怪的是,当我将进程更改为输出某个常量项(如constant_term)时,它仍然会给出相同的PL_int64错误。在进程的输出([1,2,3,4,5,6].)中添加一个点并不能解决错误。使用read_term/3会产生同样的错误。read_string/3在YAP中没有定义.
我该如何解决这个问题?
发布于 2017-03-28 07:16:40
在询问了yap用户的邮件列表后,我得到了解决方案。
使用libGMP选项重新编译YAP 6.2.2,现在它可以工作了。它也可能发生在32位YAP.
https://stackoverflow.com/questions/43029488
复制相似问题