在Python脚本中使用“apt-get install xxx”

15 投票
5 回答
21942 浏览
提问于 2025-04-17 08:15

目前我需要根据操作系统使用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 时这个不太相关,但知道这些还是有帮助的 :))

撰写回答