В моем программном обеспечении python3 мне нужно проверить, установлен ли git. Я знаю, что из терминала я могу набрать:
dpkg --get-selections > filename
, чтобы найти, какие программы установлены, и затем поместить это в файл.
Откуда мне получить python, чтобы увидеть, установлен ли git? Или есть более простой способ?
Вы можете использовать модуль Python apt, но он только проверяет, установлен ли пакет. Он не сможет работать без дистрибутива или если установлен вне менеджера пакетов:
import apt
cache = apt.Cache()
cache.open()
cache["git-core"].is_installed# Evaluates true if git is installed
Попробуйте запустить git и обработать исключение в случае сбоя:
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")
Третий вариант будет попробовать все пути в $PATH
и проверить, есть ли у вас разрешение exec для пути / git.
Принятие, которое мы знаем, где средство запуска или двоичный файл приложения установлены по умолчанию легкое, чтобы сделать подход, должно было бы просто проверить, поскольку это - существование как:
#! /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')
Другой способ запросить установленные пакеты однако состоит в том, чтобы консультироваться с управлением пакетом в нашем случае 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])
Если вы хотите сделать это так, вы можете сделать что-то вроде:
Вы также можете попробовать проверить вывод which
.
(Может быть, это не сработает, поскольку никто не предложил это?)
Я бы выбрал другой подход. Чтобы проверить, доступен ли Git в данной системе, либо проверьте, существует ли двоичный файл git
в пользовательской переменной PATH, либо попробуйте выполнить git --version
. Эта проверка будет более надежной, и она поддерживает людей, которые (по любой причине) устанавливают Git из исходного кода в / usr / local / bin или даже ~ / bin.
Это не прямой ответ на ваш вопрос, но я надеюсь, что в любом случае это поможет. Если вам нужна помощь в написании кода на Python, дайте мне знать, и я предоставлю более подробную информацию.