Автоматизированный инструмент для изменения исходного кода Python для поддержки 2.7 и 3.4

#python #python-2.7 #python-3.x #automation

#python #python-2.7 #python-3.x #автоматизация

Вопрос:

В будущем мы хотим поддерживать Python 2.7 и 3.4 из одной базы кода.

Я искал автоматизированные инструменты, но lib2to3, похоже, в результате поддерживает только Python 3.

Я знаю, что библиотека six могла бы нам помочь, но у нас много исходных файлов Python.

Моя мечта: Инструмент, который добавляет это (или даже больше будущих импортов) в каждый файл:

 from __future__ import absolute_import, division, unicode_literals, print_function
  

и инструмент должен обновиться:

  • все u'...' —> '...'
  • print foo —> print(foo)

Комментарии:

1. Похоже, что lib2to3 выполняет большую часть того, что вам нужно, в нем просто отсутствует __future__ imports, верно? Итак, вы могли бы использовать lib2to3 для создания допустимого python3, затем что-то вроде awk для добавления __future__ imports и сделать его также допустимым python2. Или я что-то пропустил?

Ответ №1:

Это должно сработать, но до сих пор не протестировано:

  1. используйте 2to3
  2. используйте 3to2