Comment obtenir la description du package en utilisant python-apt?

9

J'essaie de créer un programme graphique pour gérer facilement les packages pour les utilisateurs finaux. Cependant, je suis confronté à un problème lors de la récupération de la description du package à côté d'autres informations.

J'ai vu l'API python-apt ici et j'ai compris que je dois gérer la apt.package.Version() classe .

Mais quand j'ai essayé de l'utiliser, je n'ai obtenu que des erreurs comme:

Traceback (most recent call last):
File "./myprogram", line 6, in <module>
print package.description
File "/usr/lib/python2.7/dist-packages/apt/package.py", line 374, in description
dsc = self._translated_records.long_desc
File "/usr/lib/python2.7/dist-packages/apt/package.py", line 315, in _translated_records
desc_iter = self._cand.translated_description
AttributeError: 'list' object has no attribute 'translated_description'

Donc, y a-t-il un corps qui peut créer un exemple en cours d'exécution pour la classe apt.package.Version () s'il vous plaît?

Merci!

Madno
la source
Vérifiez que vous avez de longues descriptions (faites apt-cache showpour certains packages). La documentation indique de longues descriptions , donc askubuntu.com/a/558389/158442 peut être pertinent.
muru

Réponses:

8

Les commandes python suivantes devraient vous donner la longue description lorsqu'elles sont disponibles:

$ python
Python 2.7.6 (default, Mar 22 2014, 22:59:56) 
[GCC 4.8.2] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import apt
>>> cache = apt.Cache()
>>> pkg = cache['python2.7']
>>> pkg
<Package: name:'python2.7' architecture='amd64' id:1247L>
>>> pkg.versions
<VersionList: ['2.7.6-8']>
>>> pkg.versions[0]
<Version: package:'python2.7' version:'2.7.6-8'>
>>> pkg.versions[0].description
u'Python is a high-level, interactive, object-oriented language. Its 2.7 version
includes an extensive class library with lots of goodies for network programming, 
system administration, sounds and graphics.'
>>> 

Remarque : mes paramètres régionaux sont définis sur LANG=en_US.UTF-8afin que les chaînes traduites ne soient pas un problème ici.

Sylvain Pineau
la source