Использование" apt-get install xxx " внутри скрипта Python
в настоящее время мне нужно установить некоторый пакет, используя apt или rpm, в соответствии с ОС. Я видел lib " apt " для обновления или обновления системы, но можно ли использовать его для установки одного пакета?
Я тоже пытался использовать "подпроцесс":
subprocess.Popen('apt-get install -y filetoinstall', shell=True, stdin=None, stdout=None, stderr=None, executable="/bin/bash")
но эта команда показывает весь процесс в оболочке, я не могу его скрыть.
Спасибо за помощь.
4 ответов
можно использовать check_call
С subprocess
библиотека.
from subprocess import STDOUT, check_call
import os
check_call(['apt-get', 'install', '-y', 'filetoinstall'],
stdout=open(os.devnull,'wb'), stderr=STDOUT)
свалка stdout
to /dev/null
или os.devnull
в этом случае.
os.devnull
является независимой от платформы и вернется /dev/null
на POSIX и nul
в Windows (что не имеет значения, так как вы используете apt-get
но, все равно хорошо знать:))
для данной конкретной задачи, в качестве альтернативы subprocess
можно использовать ткани, инструмент развертывания python для автоматизации сборок.
Спасибо, ребята ! Я использую часть каждого решения. Мой код:
proc = subprocess.Popen('apt-get install -y FILE', shell=True, stdin=None, stdout=open(os.devnull,"wb"), stderr=STDOUT, executable="/bin/bash")
proc.wait()
добавлено: stdout and .ждать
спасибо еще раз из Аргентины !
используйте это для перенаправления вывода в /dev/null:
proc = subprocess.Popen('apt-get install -y filetoinstall', shell=True, stdin=None, stdout=open("/dev/null", "w"), stderr=None, executable="/bin/bash")
proc.wait()
звонок .wait () будет блокировать, пока apt-get не будет завершен.