首先检查系统是否安装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']
可以完美解决问题。