检查是否已安装软件包

17 python debian

是否有一种优雅且更像Python的方法来检查Debian上是否安装了软件包?

在bash脚本中,我会这样做:

dpkg -s packagename | grep Status
Run Code Online (Sandbox Code Playgroud)

建议在Python脚本中执行相同的操作?

谢谢,

max*_*amo 19

这是一种pythonic方式:

import apt
cache = apt.Cache()
if cache['package-name'].is_installed:
    print "YES it's installed"
else:
    print "NO it's NOT installed"
Run Code Online (Sandbox Code Playgroud)

  • 如果未安装软件包,您将收到一个关键错误。如果没有找到包,还有另一种方法可以捕获它并提供更整洁的输出。我会将其作为对 OP 的评论发布。 (2认同)

loe*_*org 7

bash 示例的一个稍微好一点的,希望是惯用的版本:

import os, subprocess
devnull = open(os.devnull,"w")
retval = subprocess.call(["dpkg","-s","coreutils"],stdout=devnull,stderr=subprocess.STDOUT)
devnull.close()
if retval != 0:
    print "Package coreutils not installed."
Run Code Online (Sandbox Code Playgroud)


Oli*_*Oli 1

看一下commands。它对于在命令行上运行事物并获取状态非常有用。

否则,我确信有一些库可以让你与 apt 交互。python-apt可能可以工作,但它有点原始。仅捕获命令行似乎更容易。