【问题标题】:Error in executing .jar file from a Python script called from another Python script, as a subprocess从另一个 Python 脚本调用的 Python 脚本作为子进程执行 .jar 文件时出错
【发布时间】:2015-08-31 14:18:42
【问题描述】:

这是对我已发布 here 的已解决帖子的扩展。我有一个python script,其中包含以下jar 执行代码(以及其他一些代码):

python_file2.py

import os
cmd_txt = "ssh -i pem_file.pem user@" + host_name + " 'cd /user/folder1/ && java -cp jar-file.jar'"
os.system(cmd_txt)

现在这个python script 文件(python_file2.py) 被另一个python script 称为subprocess。

Main_script.py

ret = subprocess.Popen([sys.executable,"python_file2.py"])

当我运行这个 Main_script.py 时,来自python_file2.py 的jar 文件的执行似乎被挂起。当我单独运行第一个脚本时,它运行良好,但是当我尝试以 subprocess 执行它时,jar 执行挂起并超时。

从subprocess 脚本内部执行此jar 执行被挂起的可能原因是什么?我想要的只是从作为subprocess 运行的python 脚本内部运行一个存在于远程机器上的jar 文件。

【问题讨论】:

    标签: java python jar subprocess


    【解决方案1】:

    使用subprocess.call 代替subprocess.Popen:

    ret = subprocess.call([sys.executable,"python_file2.py"])
    assert not ret, ret
    

    【讨论】:

    • subprocess.call 与subprocess.Popen 有什么不同可能导致这种行为?
    • 如果我是正确的subprocess.call 反过来打电话给subprocess.Popen 对吗?
    • 谁能告诉我subprocess.call 与subprocess.Popen 有什么区别可以解决问题?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-01-05
    • 2021-12-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多