在Python脚本中使用“apt-get install xxx”
目前我需要根据操作系统使用apt或rpm来安装一些软件包。我看到有一个叫“apt”的库可以用来更新或升级系统,但我想知道它是否也可以用来安装单个软件包?
我还尝试使用“subprocess”:
subprocess.Popen('apt-get install -y filetoinstall', shell=True, stdin=None, stdout=None, stderr=None, executable="/bin/bash")
但是这个命令会在终端显示所有的进程,我无法隐藏它。
谢谢你的帮助。
5 个回答
3
对于这个特定的任务,除了使用 subprocess
,你可以考虑使用 Fabric,这是一个用来自动化构建的 Python 部署工具。
5
谢谢大家!我用了每个解决方案的一部分。我的代码是:
proc = subprocess.Popen('apt-get install -y FILE', shell=True, stdin=None, stdout=open(os.devnull,"wb"), stderr=STDOUT, executable="/bin/bash")
proc.wait()
补充说明:我添加了标准输出和 .wait
再次感谢你们,来自阿根廷的问候!
13
你可以使用 subprocess
库里的 check_call
函数。
from subprocess import STDOUT, check_call
import os
check_call(['apt-get', 'install', '-y', 'filetoinstall'],
stdout=open(os.devnull,'wb'), stderr=STDOUT)
把 stdout
的输出丢到 /dev/null
,在这个情况下也可以用 os.devnull
。
os.devnull
是不依赖于平台的,在 POSIX 系统上它会返回 /dev/null
,而在 Windows 上则返回 nul
(虽然你在用 apt-get
时这个不太相关,但知道这些还是有帮助的 :))