检查Debian包是否通过Python安装

20 投票
8 回答
16350 浏览
提问于 2025-04-16 02:11

有没有一种更优雅、更像Python的方式来检查一个软件包是否在Debian系统上安装了?

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

dpkg -s packagename | grep Status

有没有什么建议可以在Python脚本中做到同样的事情?

8 个回答

2

如果你想检查一个包是否安装了某个Python模块,你可以在一个依赖这个模块的Python脚本里进行测试。具体做法就是尝试导入这个模块,然后看看是否会出现错误:

import sys
try:
    import maybe
except ImportError:
    print "Sorry, must install the maybe package to run this program."
    sys.exit(1)
8

这是一个稍微好一点的、希望更符合习惯用法的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."
26

这是一种符合Python风格的方法:

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

撰写回答