Actuellement, j'ai besoin d'installer un package à l'aide d'APT ou de RPM, selon le système d'exploitation. J'ai vu la lib "apt" à mettre à jour ou à mettre à niveau le système, mais il est possible d'utiliser un seul paquet?
J'essayais d'utiliser trop "Subprocess": P>
subprocess.Popen('apt-get install -y filetoinstall', shell=True, stdin=None, stdout=None, stderr=None, executable="/bin/bash")
5 Réponses :
Utilisez ceci pour rediriger la sortie sur / dev / null: L'appel à .Wait () bloquera jusqu'à ce que l'apt-get soit terminé. P> P >
Ah ok merci mais comment puis-je arrêter le programme, attendre l'APT terminer l'installation, et quand est installé, acquis avec les autres fonctions?
Merci gars! J'utilise une partie de chaque solution. Mon code: PROP = SUBPROCESS.POPEN ('APT-GET INSTALLY FILE', Shell = TRUE, STDIN = Aucun, STDOUT = OUVERT (OS.DevNull, "WB"), STDOUT = STDOUT, EXECUTABLE = "/ BIN / BIN / Bash ") Proc.Wait () Ajouté: stdout et .wait merci une fois de plus
Vous pouvez utiliser check_call code> dans la bibliothèque code> sous-processus code>.
from subprocess import STDOUT, check_call
import os
check_call(['apt-get', 'install', '-y', 'filetoinstall'],
stdout=open(os.devnull,'wb'), stderr=STDOUT)
Merci gars! J'utilise une partie de chaque solution. Mon code: PROP = SUBPROCESS.POPEN ('APT-GET INSTALLY FILE', Shell = TRUE, STDIN = Aucun, STDOUT = OUVERT (OS.DevNull, "WB"), STDOUT = STDOUT, EXECUTABLE = "/ BIN / BIN / Bash ") Proc.Wait () Ajouté: stdout et .wait merci une fois de plus
Cela a fonctionné pour moi. Je voudrais suggérer d'utiliser un essai et à l'exception du bloc de sorte que, en cas d'erreur, cela vous indiquera ce que le problème est plutôt que de simplement dire qu'il y avait une erreur. J'ai ajouté une réponse ci-dessous comme complément.
Pour cette tâche particulière, comme alternative à Subprocess Code> Vous pouvez envisager d'utiliser Tissu , un outil de déploiement Python pour automatiser les constructions. P>
Le lien que vous avez partagé donne ceci: autorisation refusée Vous n'avez pas les autorisations appropriées pour voir cette page. Veuillez contacter le propriétaire de ce projet pour demander la permission.
Merci gars! J'utilise une partie de chaque solution. Mon code: ajouté: stdout et .wait p> Merci une fois de plus d'Argentine! P> P>
Ceci est signifié comme une addition à la réponse acceptée de Russell Dias. Cela ajoute un essai et sauf le blocage de la sortie des informations d'erreur actionnées plutôt que de simplement indiquer qu'il y avait une erreur.
Il semble que vous n'obtiens pas correctement la fourche. Avez-vous essayé de lire la documentation?
Pour Python 3.5+, voir
Subprocess.Run () Code>