通过 Python3 脚本检测某个程序是否已安装

通过 Python3 脚本检测某个程序是否已安装

在我的 python3 软件中,我需要检查 git 是否已安装。我知道我可以从终端输入:

dpkg --get-selections > filename

查找已安装的程序,然后将其放入文件中。

从那里,我如何让 python 查看 git 是否已安装?或者有更简单的方法吗?

答案1

您可以使用 python apt 模块,但它仅检查软件包是否已安装。如果非 deb 发行版或安装在软件包管理器之外,它将失败:

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并测试您是否对 path/git 具有执行权限。

答案2

查找已安装的文件

假设我们知道应用程序的启动器或二进制文件的默认安装位置,一个简单的方法就是检查它是否存在,例如:

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

答案3

如果你想这样做,你可以这样做:

检查变量 = 0  
对于打开的行(“文件名”):  
    如果“git”在行中:  
        检查变量 = 检查变量 + 1  
打印“短语 git found”,checkvar,“times”

答案4

您也可以尝试检查的输出which

(也许这不起作用,因为没有其他人建议这样做?)

相关内容