1 votes

Scripting Bash : Vérification multiplateforme : le paquet Python est-il installé dans le système ?

Par exemple, je veux vérifier si py-sqlite3 est disponible ? Une des méthodes serait d'appeler cette commande avec un minimum de script Python et d'attraper l'erreur ?

Je veux faire une vérification pour toute distro linux et système unix (au moins bsd).

Quelle serait la meilleure façon d'y parvenir ?

P.s. Veuillez fournir un exemple de capture d'erreur de script Shell, car je ne suis pas très avancé en matière de script Shell.

3voto

ooshro Points 10764

Dans 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

2voto

ShayPal5 Points 126

J'ai trouvé que les réponses existantes étaient incomplètes et ne contenaient pas suffisamment d'exemples. Voici la solution que j'ai retenue :

# 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

Un gist Github de cet exemple peut être trouvé ici : https://gist.github.com/shaypal5/d505af9953cd86f59c750fa600ee4ba6

2voto

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

et ensuite vous pouvez l'utiliser comme ceci :

package_exist package_name

1voto

Andrew M. Points 10852

Cela serait facile à faire avec Python.

import sys

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

Sorties avec return code 0 s'il peut l'importer, ou return code 1 si elle ne le peut pas.

Andrew

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X