在我的 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
。
(也许这不起作用,因为没有其他人建议这样做?)