Bash 脚本:跨平台检查系统中是否安装了 python 包?

Bash 脚本:跨平台检查系统中是否安装了 python 包?

例如我想检查 py-sqlite3 是否可用..?其中一种方法是使用一些最少的 python 脚本调用该命令并捕获错误?

我想检查任何 Linux 发行版和 Unix 系统(至少是 BSD)

实现这一目标的最佳方法是什么?

Ps 请提供 shell 脚本错误捕获的示例,因为我对 shell 脚本不是很熟悉

答案1

我发现现有的答案不完整,缺乏足够好的例子。这是我确定的解决方案:

# an example checking if the pandas package is installed
if python -c 'import pkgutil; exit(not pkgutil.find_loader("pandas"))'; then
    echo 'pandas found'
else
    echo 'pandas not found'
fi

此示例的 Github 要点可在此处找到: https://gist.github.com/shaypal5/d505af9953cd86f59c750fa600ee4ba6

答案2

在bash中:

$ python -c 'import sqlite3' 2>/dev/null && echo "python sqlite3 modules install" || echo "python sqlite3 modules not install"
python sqlite3 modules install

$ python -c 'import sqlite3' 2>/dev/null && echo "python sqlite3 modules install" || echo "python sqlite3 modules not install"
python sqlite3 modules not install

答案3

package_exist(){
    package=$1
    if pip freeze | grep $package=; then
        echo "$package found"
    else
        echo "$package not found"
    fi
}

然后你可以像这样使用它:

package_exist package_name

答案4

使用 Python 可以轻松实现这一点。

import sys

try:
    import sqlite3
except ImportError:
    sys.exit(1)
else:
    sys.exit(0)

return code 0如果可以导入则退出,return code 1如果不能导入则退出。

安德鲁

相关内容