У меня есть некоторый код, который я пытаюсь заставить его играть приятно с геопроцессором ESRI. Однако геопроцессор ESRI работает на Python 2.2, 2.3, 2.4, 2.5. Мы должны заставить наши инструменты работать над любой версией. Таким образом, я провел много времени, работая и кодируя обходные решения для различных версий, таких, что геопроцессор обертки имеет идентичную функциональность через все версии.
Теперь вот большая вещь, есть ли своего рода приложение, которое может в основном просканировать модули, чтобы видеть, совместимы ли его синтаксис и методы назад с вышеупомянутой версией Python?
К сожалению, я не могу установить Python 2.2, так как у меня есть Arcgis 9.3, который требует Python 2.5. И наоборот, я получил в значительной степени все зависимости от модуля, отсортированные и разработанные. (win32com, ctypes, и т.д.).
Но я волнуюсь по поводу своего фактического кода, я мог провести часы, идя и читая, какие ключевые слова были добавлены для того, какая версия и т.д., однако это в основном будет огромной головной болью. Есть ли своего рода приложение, которое делает эти вещи?
Если вы активно разрабатываете коммерческий продукт и действительно хотите поддерживать все эти версии должным образом, я бы посоветовал:
Написание автоматизированного набор тестов, который можно запустить, и проверяет функциональность всей вашей библиотеки / приложения / чего угодно.
Настройка машины или, в идеале, виртуальной машины для каждой тестовой среды (python 2.2–2.6 и любые комбинации платформ, если ваш продукт не только win32). Это особенно легко сделать в настоящее время, учитывая, что сейчас существует несколько бесплатных продуктов для виртуализации (VirtualBox и VMWare Server, если назвать два)
Использование чего-то вроде buildbot для автоматизации тестирования, выполняемого на всех других платформах, и сбор результатов.
Я мог бы упомянуть, однако, что произошли значительные изменения между 2.2 и 2.3, а также между 2.3 и 2.4. Вот почему большинство библиотек Python поддерживают только 2.3, а некоторые переходят на поддержку только 2.4 и выше.
В каждом основном выпуске есть документ «Что нового в python 2.x», но кодирование для 2.2 означает, что вы упускаете:
из генераторов импорта __future__
) Просто чтобы назвать очень маленькое подмножество удивительных вещей, которых у вас, вероятно, не будет.
Вы должны действительно подумать о том, насколько сильно вы хотите поддерживать версию Python 7-летней давности, и упустить множество интересных функций, которые могут уменьшить размер вашего кода (или, возможно, просто улучшить читаемость).
Попробуйте pyqver: https://github.com/ghewgill/pyqver/
Получает минимальную версию для данного скрипта python, анализируя ключевые слова и используемые модули.
Также вы можете скомпилировать локально python 2.2 и использовать virtualenv для создания окружения python 2.2 с флагом --python.