После установки пакета is_installed возвращает False, в Python apt

С помощью Python apt я могу устанавливать пакеты. До и после установки пакета я обновил кеш. Однако до и после установки пакета is_installed возвращает то же самое, другими словами, он дает неправильный результат.

После установки пакета мне нужно проверить, установлен ли пакет или нет. Вот мой код:

import apt.cache

def cache_update():
    cache = apt.cache.Cache()    
    cache.update()
    pkg = cache["p7zip-full"]
    print pkg.is_installed  # prints false

    if pkg.is_installed:
       print "it is already installed. Invalid request! "
       pkg.mark_delete()
    else:
       print "it is not installed.Now you are installing..."
       pkg.mark_install()

    cache.commit()


    print "DONE."
    cache.update()  
    print pkg.is_installed # prints false.



if __name__ == '__main__':
    cache_update()
0
задан 2 June 2015 в 01:09

2 ответа

По некоторым причинам Python не переносит переменную после cache.commit(). При определении его снова впоследствии это возвращает право pkg.is_installed ответ.

#!/usr/bin/python

import apt.cache
pack1 = 'p7zip-full'

def cache_update():
    cache = apt.cache.Cache()    
    cache.update()
    pkg = cache[pack1]
    print pkg.is_installed  # prints false

    if pkg.is_installed:
       print "it is already installed. Invalid request! "
       pkg.mark_delete()
    else:
       print "it is not installed.Now you are installing..."
       pkg.mark_install()

    cache.commit()

    print "DONE."
    cache = apt.cache.Cache()
    pkg = cache[pack1]
    print pkg.is_installed # prints true.


if __name__ == '__main__':
    cache_update()
0
ответ дан 2 June 2015 в 01:09

Вы можете re-init с открытым () как так:

cache.commit()
cache.open()
print cache[pack1].is_installed
1
ответ дан 4 October 2019 в 04:00

Другие вопросы по тегам:

Похожие вопросы: