Переход на Python 2.6.x - PullRequest
       14

Переход на Python 2.6.x

2 голосов
/ 28 августа 2009

Мои материалы разработаны и работают на Python 2.5.2

Я хочу переместить некоторый код в 3.x, но это неосуществимо, потому что многие внешние пакеты, которые я использую, еще не созданы. (Например, numpy).

Итак, я сделаю промежуточный шаг и перейду к 2.6.2.

Мой вопрос: если внешний модуль работает на 2.5.2, но явно не заявляет, что он работает с 2.6.x, могу ли я предположить, что все будет хорошо? Или нет?

Ответы [ 4 ]

8 голосов
/ 28 августа 2009

Скорее всего, они будут работать нормально. Некоторые вещи могут вызвать DeprecationWarnings, например, модуль sha, но их можно безопасно игнорировать. Это мое внутреннее чувство, конечно, вы можете столкнуться с какой-то конкретной вещью, вызывающей проблемы. В любом случае, быстрый взгляд на них должен довольно быстро определить, нуждается ли ваш код в работе:

3 голосов
/ 28 августа 2009

Основная проблема будет связана с любыми C-кодированными расширениями, которые вы можете использовать: в зависимости от вашей системы, но особенно в Windows, такие расширения, скомпилированные для 2.5, могут вообще не работать (или, по крайней мере, не тихо и достоверно) с 2.6. Это не особенно отличается от, например, перехода с 2,4 на 2,5 в прошлом.

Самое простое решение (IMHO) - получить исходные коды для любых таких расширений и переустановить их. На большинстве платформ и для большинства расширений будет работать python setup.py install (возможно, с sudo или вошедшим в систему как администратор, в зависимости от вашей установки) - вам может потребоваться загрузить и установить соответствующие пакеты «для разработчиков», опять же, в зависимости от какую именно систему вы используете и что уже установили (например, в Mac OS X вам нужно установить XCode - или хотя бы его подмножество gcc, но установить его проще всего - что, в свою очередь, требует от вас зарегистрироваться бесплатно в Apple Developer Connection и загрузить большой пакет XCode).

Я не уверен, насколько беспроблемным является этот подход в Windows в настоящее время, т. Е. Можете ли вы использовать компиляторы free-in-in-beer, такие как mingw или Microsoft "express" редакция VS, или иметь выложить $$ MS, чтобы получить правильный компилятор. Тем не менее, большинство разработчиков сторонних расширений стараются поставлять готовые двоичные файлы Windows именно потому, что перекомпиляция пользователей является (или, по крайней мере, раньше) затруднительной задачей для Windows, а версия 2.6 уже широко поддерживается сторонними разработчиками. сопровождающие расширения (поскольку в конце концов для них это тоже простая перекомпиляция ;-), так что вам может повезти и вы найдете все необходимые скомпилированные двоичные файлы для используемых вами расширений.

2 голосов
/ 28 августа 2009

Вы не можете предполагать это. Однако вы должны легко проверить, работает ли он или нет.

Кроме того, не пытайтесь перейти на 3.x еще год или два. В 2.6 уже есть многие функции 3.0, уже перенесенные на него, поэтому переход не будет таким уж плохим, как только вы это сделаете.

1 голос
/ 28 августа 2009

Возможно, стоит прочитать раздел Что нового документации 2.6. Хотя версия 2.6 разработана для обратной совместимости, есть несколько изменений, которые могут перехватывать код, в частности код, который делает что-то странное (пример: hasattr() раньше использовался для проглатывания всех ошибок, теперь он проглатывает все, кроме SystemExit и KeyboardInterrupt ; не то, что большинство людей заметили бы, но там может быть странный код, который будет иметь значение).

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

...