#!/usr/bin/python
"""Print all installed packages"""
import apt_pkg
def main():
"""Main."""
apt_pkg.init_config()
apt_pkg.init_system()
cache = apt_pkg.Cache()
print "All installed packages:"
for pkg in cache.packages:
if pkg.current_state == apt_pkg.CURSTATE_INSTALLED:
print " ", pkg.name
if __name__ == "__main__":
main()
В общем, вы можете получить apt_pkg.Cache в переменную cache, и затем проверить установлен ли пакет так:
pkg = cache[name_of_our_package]
if pkg.current_state == apt_pkg.CURSTATE_INSTALLED:
print «Yes, package {0} was installed».format(pkg.name)
Установите документацию к python-apt, и всё станет понятно. В документации есть более простой способ, основанный на использовании высокоуровневого apt.Cache, но он у меня не работает. Да, отлавливайте различные состояния CURSTATE(потом, что иногда пакет может быть установлен, но неправильно сконфигурирован, и т.п.) Успехов в творчестве:)
True, False и условные выражения не нужны, как справедливо заметил Kalashnikov. Операторы сравнения всегда возвращают bool, так что вам только надо передать полученный результат reurn. А инициализацию стоит переместить в начало приложения, что-бы вызывая свою функцию много раз, не заставлять apt_pkg каждый раз заново проводить инициализацию. Это сказывается на быстродействии вашей программы. Сам люблю набросать что-то, лишь бы работало. Но убедился, что лучше сразу делать правильно. А то где-то что-то забыл отрефакторить, и временное решение становиться постоянным...