Проверка версии модуля Python во времени выполнения

Чтобы быть более точным в отношении точки @ aynber в комментариях: Пользовательские функции , содержащиеся в блоках, не будут существовать, пока они не будут достигнуты выполнением программы. Поскольку ваш function существует в блоке, а код, который ссылается на него, - до - функция была объявлена, вы получите ошибки, относящиеся к undefined function.

Решение состоит в том, чтобы перефакторировать вашу программу, чтобы переместить объявление функции выше в пределах вашего блока, или переместить объявление функции наружу на корневой уровень вашей программы, чтобы оно было немедленно доступно при запуске вашей программы. [115 ]

109
задан Peter Mortensen 16 April 2015 в 19:55
поделиться

2 ответа

Я избегал бы хеширования. Версия libxslt того, чтобы быть используемым могла бы содержать некоторый тип патча, который не производит Ваше использование его.

Как альтернатива, я хотел бы предложить, чтобы Вы не проверяли во время выполнения (не знайте, является ли это трудным требованием или не). Поскольку Python наполняет, я пишу, что это имеет внешние зависимости (сторонние библиотеки), я пишу скрипт, который пользователи могут запустить для проверки их установки Python, чтобы видеть, установлены ли соответствующие версии модулей.

Для модулей, которые не имеют определенного атрибута 'версии', можно осмотреть интерфейсы, которые он содержит (классы и методы), и посмотрите, соответствуют ли они интерфейсу, они ожидают. Затем в фактическом коде, что Вы продолжаете работать, предположите, что сторонние модули имеют интерфейс, который Вы ожидаете.

6
ответ дан jldupont 24 November 2019 в 03:21
поделиться

Некоторые идеи:

  1. Попытайтесь проверить на функции, которые существуют или не существуют в Ваших необходимых версиях.
  2. Если нет никаких функциональных различий, не осматривают аргументы функции и подписи.
  3. Если Вы не можете изобразить его из функциональных подписей, настройте некоторые тупиковые вызовы во время импорта и проверьте их поведение.
6
ответ дан Richard Levasseur 24 November 2019 в 03:21
поделиться
Другие вопросы по тегам:

Похожие вопросы: