Dans mon logiciel python3, je dois vérifier si git est installé. Je sais que depuis le terminal, je peux taper:
dpkg --get-selections > filename
pour trouver quels programmes sont installés et ensuite mettre cela dans un fichier.
À partir de là, comment pourrais-je obtenir python pour voir si git est installé? Ou y a-t-il un moyen plus facile?
Vous pouvez utiliser le module python apt, mais il vérifie uniquement si le paquet est installé. Il échouera les distributions non-deb ou si elles sont installées en dehors du gestionnaire de paquets:
import apt
cache = apt.Cache()
cache.open()
cache["git-core"].is_installed# Evaluates true if git is installed
Essayez d’exécuter git et de gérer l’exception si elle échoue:
import subprocess
try:
# pipe output to /dev/null for silence
null = open("/dev/null", "w")
subprocess.Popen("git", stdout=null, stderr=null)
null.close()
except OSError:
print("git not found")
Une troisième option consisterait à essayer tous les chemins de $PATH
et à vérifier si vous avez le droit d’exécution sur path/git.
En supposant que nous sachions où le lanceur ou le binaire de l'application est installé par défaut, une approche facile à faire consisterait simplement à vérifier son existence, par exemple:
#! /usr/bin/env python3
#
# Query package state by installation path
import os.path
path = '/usr/bin/git'
def query_package(path):
if os.path.exists(path):
print('Git is ready to use')
else:
print('please install Git')
Un autre moyen d'interroger les paquets installés consiste toutefois à consulter la gestion des paquets, dans notre cas dpkg:
#! /usr/bin/env python3
#
# Query package state by dpkg status
import subprocess
package = 'git'
def query_package(package):
status = subprocess.getstatusoutput("dpkg-query -W -f='${Status}' " + package)
if not status[0]:
print(status[1]) # package is installed
else:
print(status[1])
Si vous vouliez le faire de cette façon, vous pourriez faire quelque chose comme:
checkvar = 0 pour la ligne ouverte ("nomfichier"): si "git" dans la ligne: checkvar = checkvar + 1 print "Phrase git trouvée ", checkvar," fois "
Je prendrais une approche différente. Afin de vérifier si Git est disponible sur un système donné, vérifiez si le binaire git
existe dans PATH de l'utilisateur ou essayez simplement d'exécuter git --version
. Cette vérification sera plus fiable et supportera les personnes qui (pour une raison quelconque) installent Git à partir de la source dans/usr/local/bin, ou même ~/bin.
Ce n'est pas une réponse directe à votre question, mais j'espère que cela aidera quand même. Si vous avez besoin d'aide pour coder cela en Python, faites-le moi savoir et je vous fournirai plus de détails.
Vous pouvez également essayer de vérifier le résultat de which
.
(Peut-être que cela ne fonctionnera pas comme personne ne l'a suggéré?)