Я обнаружил, что для обеспечения инициализации моей инфраструктуры ** idempotent мне нужно иметь возможность проверять пакет из оболочки в oneliner. Я построил ответ на @ cuonglm. Мне пришлось отменить 1 и 0, потому что я создаю статус выхода, а не печатаю строку.
python -c "import sys, pkgutil; sys.exit(0 if pkgutil.find_loader(sys.argv[1]) else 1)" pymongo
Вы можете заменить sys.argv[1] на одиночное цитированное имя вашего пакет, но для моих сценариев инициализации мне нравится читаемость в конце.
python -c "import sys, pkgutil; sys.exit(0 if pkgutil.find_loader('pymongo') else 1)"
** Я понимаю, что у шеф-повара, марионетки и всех есть плагины для управления пакетами python, но вы можете найти себя в такой ситуации, как я, где вы используете устаревшую версию и не хотите использовать устаревшие плагины.