Например, я хочу проверить, доступен ли py-sqlite3 ..? Один из методов - вызвать эту команду с минимальным скриптом Python и отловить ошибку?
Я хочу проверить наличие любого дистрибутива linux и системы unix (по крайней мере, bsd)
Как лучше всего этого добиться?
P.s. Приведите пример отлова ошибок сценария оболочки, потому что я не настолько продвинут в сценариях оболочки
package_exist(){
package=$1
if pip freeze | grep $package=; then
echo "$package found"
else
echo "$package not found"
fi
}
а затем вы можете использовать это так:
package_exist package_name
В 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
Я нашел существующие ответы неполными и в них отсутствуют достаточно хорошие примеры. Вот решение, на котором я остановился:
# 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
Это было бы легко сделать с помощью Python.
import sys
try:
import sqlite3
except ImportError:
sys.exit(1)
else:
sys.exit(0)
Выходы с return code 0
если он может его импортировать, или return code 1
если не может.
Андрей