【问题标题】:running a shell command in python get stuck在 python 中运行 shell 命令卡住了
【发布时间】:2023-03-03 20:22:01
【问题描述】:

我正在尝试自动部署到 AWS beanstalk 使用 Python 脚本。

执行 eb init 时会出现提示,我可以 使用“是”命令传递参数。 即使没有 yes 命令,我的 eb init 命令也会卡住。 我用:

os.chdir(folder)

os.system("yes n | eb init --region us-east-1 site")

我知道我也可以使用 subprocess 但不确定 具体如何使用。

希望得到一些帮助 谢谢。

【问题讨论】:

  • 关于子流程 - docs.python.org/2/library/…
  • “卡住”是什么意思?
  • @Amits:我不认为问题出在 Python 方面。对于调试,我会先将命令放入一个文件中,然后使用sh -x /absolute/path/to/script/file.sh 从命令行执行它。为了安全起见,我还会在这个文件的最前面放一个pwd; env 行,这样我们就可以检查工作目录和环境是否正确。而且,对于这个测试(我在这方面有点偏执),我还将指定yeseb 命令的绝对路径。从命令行验证此 shell 脚本是否正常工作后,我将从 os.system 调用它。

标签: python shell amazon-web-services amazon-elastic-beanstalk


【解决方案1】:

也许这对你有帮助

from subprocess import Popen
command='yes n | eb init --region us-east-1 site'
proc=Popen(command)

【讨论】: