Python устарел функции - PullRequest
       17

Python устарел функции

3 голосов
/ 31 октября 2009

У меня есть приложение Django, написанное на Python 2.5, и я планирую обновить его до совместимости с Python 2.6. Он содержит сотни файлов .py. Есть ли простой способ найти все устаревшие функции в этих файлах?

Ответы [ 5 ]

5 голосов
/ 31 октября 2009

Между точечными выпусками Python (например, между 2.5 и 2.6) все, что может сломаться, является предупреждением по крайней мере для одного выпуска. Большинство предупреждений об устаревании отправляются по умолчанию, но вы имеете точный контроль над отправленными предупреждениями с опцией вызова интерпретатора -W.

Это относительно небольшая проблема между точечным выпуском, поскольку они явно предназначены для обратной совместимости. Большее изменение происходит между Python 2.x и 3.0, для которых некоторые специальные инструменты, включая опцию вызова интерпретатора -3, отображают предупреждения об устаревании, связанные с Python 3.0.

5 голосов
/ 31 октября 2009

Я не уверен, что вы подразумеваете под "устаревшими функциями" при обновлении с Python 2.5 до Python 2.6.

Примечания к выпуску очень специфичны. http://docs.python.org/whatsnew/2.6.html

Нет устаревших функций. Несколько целых модулей устарели и один атрибут класса Exception.

У вас есть GREP (или FIND), и у вас есть PYTHON, который вы можете использовать для поиска сотен файлов исходного кода Python.

Когда мы сделали изменение с 2.5 на 2.6, у нас не было проблем с устаревшими функциями.

Устаревший означает «все еще работает».

У нас был ровно один устаревший модуль, и об этом во время нашего модульного тестирования сообщалось в предупреждающем сообщении. Мы просто прочитали журнал сообщений об устаревании и заменили модуль. (Это был md5, кстати.) В конце концов, мы сделали GREP для всех случаев использования md5 и заменили их.

0 голосов
/ 19 ноября 2011

Все больше и больше меня убеждают, что правильный ответ: «Просто запустите свой набор тестов, чтобы узнать». У вас есть свой набор тестов, покрывающий вашу программу разумно, верно? Если нет, то это отличная возможность создать его (вы можете убедить своего начальства в том, что это «миграция»;)).

0 голосов
/ 31 октября 2009

Реальная сделка - перейти с 2,6 на 3,0. Если вы хотите узнать все об этом, для этого есть очень хорошая речь:

http://blip.tv/file/1949281

Включает в себя:

  • Несовместимость;
  • обойти;
  • до дос;
  • инструменты автоматической миграции.
0 голосов
/ 31 октября 2009

Я думаю, что приложения Python 2.5 должны нормально работать в 2.6 без обновлений. 2.6 может жаловаться на некоторые устаревшие функции, но они удалены только в 3.0 и все еще работают в 2.6.

...