【问题标题】:subprocess doesn't work on linux [closed]子进程在linux上不起作用[关闭]
【发布时间】:2018-10-29 16:15:25
【问题描述】:

我想自动化在 linux 上安装依赖项的过程,但每当我运行我的命令时,什么都没有发生。

代码:

commands_to_run = ["sudo apt-get update && sudo apt-get upgrade",
                   "sudo apt-get install build-essential cmake pkg-config",
                   "sudo apt-get install libjpeg-dev libtiff5-dev libjasper-dev libpng12-dev",
                   "sudo apt-get install libavcodec-dev libavformat-dev libswscale-dev libv4l-dev",
                   "sudo apt-get install libxvidcore-dev libx264-dev",
                   "sudo apt-get install libgtk2.0-dev libgtk-3-dev",
                   "sudo apt-get install libatlas-base-dev gfortran",
                   "sudo apt-get install python2.7-dev python3-dev"]

import subprocess

for command in commands_to_run:
    subprocess.call(command, shell=True)

我尝试了许多不同的选项,但没有任何效果。我拒绝相信你不能在 Linux 上自动安装依赖项。

编辑:它似乎有效,但它没有做任何事情。当我想再次运行它但通过终端它告诉我没有安装依赖项并询问我是否要安装它(y/n)。

【问题讨论】:

  • 我运行它,它可以工作..
  • 为什么不起作用?看起来不错。
  • 请阅读stackoverflow.com/help/mcve“它不起作用”不是问题陈述。
  • 因为sudo强制你输入密码。 stackoverflow.com/questions/25215604/…
  • 一个最小的、可验证的例子是commands_to_run = ["ls -l", "pwd "]。您应该看到这两个命令的输出。该调查应该使您更接近问题的根源。如果这样可行,那么@Simon 建议的sudo 可能是个问题。您可以在/etc/sudoers.d 中输入以进行救援。

标签: python linux terminal


【解决方案1】:

apt-get 支持-y 标志,它会自动以“是”回答任何问题。见https://linux.die.net/man/8/apt-get。这应该可以解决您的问题。

【讨论】:

  • 不知道标志。是的,现在我认为它有效。谢谢。
猜你喜欢
  • 1970-01-01
  • 2013-01-22
  • 1970-01-01
  • 2018-10-27
  • 2019-02-20
  • 2019-12-15
  • 2016-01-12
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多