Как видеть, совместим ли код назад для Python?

У меня есть некоторый код, который я пытаюсь заставить его играть приятно с геопроцессором ESRI. Однако геопроцессор ESRI работает на Python 2.2, 2.3, 2.4, 2.5. Мы должны заставить наши инструменты работать над любой версией. Таким образом, я провел много времени, работая и кодируя обходные решения для различных версий, таких, что геопроцессор обертки имеет идентичную функциональность через все версии.

Теперь вот большая вещь, есть ли своего рода приложение, которое может в основном просканировать модули, чтобы видеть, совместимы ли его синтаксис и методы назад с вышеупомянутой версией Python?

К сожалению, я не могу установить Python 2.2, так как у меня есть Arcgis 9.3, который требует Python 2.5. И наоборот, я получил в значительной степени все зависимости от модуля, отсортированные и разработанные. (win32com, ctypes, и т.д.).

Но я волнуюсь по поводу своего фактического кода, я мог провести часы, идя и читая, какие ключевые слова были добавлены для того, какая версия и т.д., однако это в основном будет огромной головной болью. Есть ли своего рода приложение, которое делает эти вещи?

14
задан Brian 3 February 2016 в 17:50
поделиться

2 ответа

Если вы активно разрабатываете коммерческий продукт и действительно хотите поддерживать все эти версии должным образом, я бы посоветовал:

  1. Написание автоматизированного набор тестов, который можно запустить, и проверяет функциональность всей вашей библиотеки / приложения / чего угодно.

  2. Настройка машины или, в идеале, виртуальной машины для каждой тестовой среды (python 2.2–2.6 и любые комбинации платформ, если ваш продукт не только win32). Это особенно легко сделать в настоящее время, учитывая, что сейчас существует несколько бесплатных продуктов для виртуализации (VirtualBox и VMWare Server, если назвать два)

  3. Использование чего-то вроде buildbot для автоматизации тестирования, выполняемого на всех других платформах, и сбор результатов.

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

В каждом основном выпуске есть документ «Что нового в python 2.x», но кодирование для 2.2 означает, что вы упускаете:

  • Генераторы (2.3) (ну, на самом деле, вы можете получить их в 2.2 с из генераторов импорта __future__ )
  • Выражения генератора (2.4)
  • модуль подпроцесса (2.4)
  • Синтаксис декоратора (2.4)
  • устанавливает (2.3)
  • десятичное (2.4, но может быть перенесен обратно)
  • datetime (2.3)
  • itertools (2.3)

Просто чтобы назвать очень маленькое подмножество удивительных вещей, которых у вас, вероятно, не будет.

Вы должны действительно подумать о том, насколько сильно вы хотите поддерживать версию Python 7-летней давности, и упустить множество интересных функций, которые могут уменьшить размер вашего кода (или, возможно, просто улучшить читаемость).

11
ответ дан 1 December 2019 в 12:52
поделиться

Попробуйте pyqver: https://github.com/ghewgill/pyqver/

Получает минимальную версию для данного скрипта python, анализируя ключевые слова и используемые модули.

Также вы можете скомпилировать локально python 2.2 и использовать virtualenv для создания окружения python 2.2 с флагом --python.

10
ответ дан 1 December 2019 в 12:52
поделиться
Другие вопросы по тегам:

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