Узнайте, установлена ​​ли программа из скрипта Python3

В моем программном обеспечении python3 мне нужно проверить, установлен ли git. Я знаю, что из терминала я могу набрать:

dpkg --get-selections > filename

, чтобы найти, какие программы установлены, и затем поместить это в файл.

Откуда мне получить python, чтобы увидеть, установлен ли git? Или есть более простой способ?

6
задан 18 April 2011 в 17:24

5 ответов

Вы можете использовать модуль 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.

0
ответ дан 18 April 2011 в 17:24

Ищите установленные файлы

Принятие, которое мы знаем, где средство запуска или двоичный файл приложения установлены по умолчанию легкое, чтобы сделать подход, должно было бы просто проверить, поскольку это - существование как:

#! /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

Другой способ запросить установленные пакеты однако состоит в том, чтобы консультироваться с управлением пакетом в нашем случае 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])
1
ответ дан 18 April 2011 в 17:24

Если вы хотите сделать это так, вы можете сделать что-то вроде:

0
ответ дан 18 April 2011 в 17:24

Вы также можете попробовать проверить вывод which.

(Может быть, это не сработает, поскольку никто не предложил это?)

0
ответ дан 18 April 2011 в 17:24

Я бы выбрал другой подход. Чтобы проверить, доступен ли Git в данной системе, либо проверьте, существует ли двоичный файл git в пользовательской переменной PATH, либо попробуйте выполнить git --version. Эта проверка будет более надежной, и она поддерживает людей, которые (по любой причине) устанавливают Git из исходного кода в / usr / local / bin или даже ~ / bin.

Это не прямой ответ на ваш вопрос, но я надеюсь, что в любом случае это поможет. Если вам нужна помощь в написании кода на Python, дайте мне знать, и я предоставлю более подробную информацию.

0
ответ дан 18 April 2011 в 17:24

Другие вопросы по тегам:

Похожие вопросы: