У меня есть набор сценариев Python, которые я часто запускаю на разных машинах, которые зависят от нескольких внешних библиотек, а также от некоторых других приложений, созданных с помощью subprocess.Popen
.
Как и следовало ожидать, в зависимости от версии установленных модулей и приложений, выходной сигнал меняется. Для решения этой проблемы я хотел бы отслеживать, какие версии использовались во время выполнения.
Для этого я рассмотрел следующие шаги:
- Использование modulefinder для сбора зависимостей.
- Попробуйте позвонить
module.__version__
, module.get_version()
или другой общий
способы хранения информации о версии на каждом собранном модуле.
- Соберите все вызовы на
subprocess.Popen
и попытайтесь получить номер версии, проанализировав выходные данные с различными аргументами, такими как -version, -v, - ?, -h, ...
Шаги 2 и 3 могут быть значительно улучшены с помощью специальных утилит ( Debian в моем случае), таких как dpkg , для получения версий установленных пакетов. Недостатком является то, что он становится не только ОС, но и специфичным для дистрибутива, однако я понимаю, что первоначальный подход крайне неэффективен и подвержен ошибкам, если вообще функционален.
Так что мой вопрос: есть ли какой-нибудь пакет для решения этой проблемы или у кого-нибудь есть лучшее предложение о том, как его реализовать?