pycocoevalcap meteor.py 报错 [Errno 2] No such file or directory ‘java’解决办法

首先检查系统是否安装java。

java -version

如果未安装java,则可以参考https://blog.csdn.net/kdongyi/article/details/107002068

安装java。手动安装可以用清华的镜像https://mirrors.tuna.tsinghua.edu.cn/AdoptOpenJDK/,选择对应版本的jdk或者jre之一即可,在注意设置环境变量。安装完成后再次使用

java -version

检查。

我遇到的问题在于,正确安装java后仍会报错 [Errno 2] No such file or directory ‘java’,而在命令行中运行命令

java -jar -Xmx2G meteor-1.5.jar - - -stdio -l en -norm -a data/paraphrase-en.gz

却不报错。参考https://blog.csdn.net/qq_41183751/article/details/121065700,在

subprocess.Popen

调用时加上shell=True,即

subprocess.Popen(meteor_cmd, \
        cwd=os.path.dirname(os.path.abspath('.')), \
        stdin=subprocess.PIPE, \
        stdout=subprocess.PIPE, \
        stderr=subprocess.PIPE, bufsize=1, universal_newlines=True)

但可能报错 BrokenPipeError: [Errno 32] Broken pipe

最终解决办法:不使用shell=True,修改命令list,指定java路径,即

meteor_cmd = ['$你的java安装目录$/bin/java', '-jar', '-Xmx2G', METEOR_JAR, \
        '-', '-', '-stdio', '-l', 'en', '-norm','-a', 'data/paraphrase-en.gz']

可以完美解决问题。

你可能感兴趣的:(java,nlp,python)