Должен ли я изменить свой код Python, если я обновлю Ubuntu?

11

У меня есть программное обеспечение, которое я разрабатывал в Python 3 годами. До сегодняшнего дня я использовал Ubuntu Desktop 11.04, но теперь я хочу перейти на более высокую версию Ubuntu.

Должен ли я оставаться на Ubuntu 11.04, чтобы мне не пришлось менять части исходного кода моего программного обеспечения из-за новых изменений в более высоких версиях Ubuntu?

Не повлияет ли последняя версия Ubuntu на мое программное обеспечение?

Сильвен Пино
источник
18
Это действительно легко для меня: обновите до 14.04, если что-то сломалось в вашем программном обеспечении: исправьте это. Это отличное упражнение, чтобы избежать программной гнили. Тип проблемы, которую вы можете найти, связан с зависимостями. Вы можете проверить это заранее в virtualenv.
don.joey
6
@begueradj Я не хочу сводить к минимуму усилия, которые он собирается предпринять, ни сводить на нет ваши причины. Это просто: либо вы приложите усилия, либо ваше программное обеспечение действительно не будет длиться долго. Вы можете обновить до 12.04, но оставаться на EOL версии проблематично. И проблема не уйдет сама собой ...
don.joey
5
@begueradj - пожалуйста, отредактируйте свой вопрос и расскажите немного о вашем программном обеспечении. Опишите, что он делает. Опишите, какой инструментарий вы используете (например, GTK? QT?). Опишите, от какого стороннего программного обеспечения оно зависит (например, от конкретной версии Firefox? Webkit?). Опишите зависимости программного обеспечения для создания вашего программного обеспечения. Без вышеуказанной информации вы не получите конкретного ответа на свой вопрос. Вы просто получите общий ответ, как и сейчас.
fossfreedom
3
11.04 достигла конца жизни полтора года назад .. Вы должны были обновиться давно.
псуси

Ответы:

3

На основании ваших комментариев вы успешно протестировали свое программное обеспечение на виртуальных машинах, что является хорошей новостью.

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

Теперь, чтобы убедиться, что он будет продолжать работать с новыми выпусками Ubuntu, я настоятельно рекомендую вам сохранить его как пакет и предоставить полный набор тестов для вашего приложения и вызывать его во время процесса сборки пакета (например, позвонив setup.py testв ваш debian/rules override_dh_auto_testраздел ).

Вы можете легко настроить ежедневные сборки вашего пакета в ppa, используя рецепт bzr-builder . Таким образом, вы будете уведомлены обо всех сбоях сборки, вызванных новыми версиями программного обеспечения или нарушенными зависимостями.

Новые релизы обычно открыты для разработки через несколько дней после официального объявления о выпуске. Посмотрите на нашу страницу ppa , Utopic теперь является частью серии дистрибутивов, для которой мы создаем:

введите описание изображения здесь

Сильвен Пино
источник
3
Почему у вас есть 2 ответа на этот же вопрос? Кроме того, autopkgtest не работает таким образом. И как это на самом деле отвечает на вопрос лучше или точнее, чем на любой другой вопрос?
Добей
Я отправил второй ответ во время щедрости. На этот раз, чтобы сосредоточиться на том, как предотвратить проблемы с обновлением, надеясь принести то, чего действительно ожидал OP (так как по его комментарию я знал, что его приложение корректно работает с 14.04)
Сильвен Пино,
Я рекомендую вам задать еще один вопрос, чтобы поставить свой ответ там. Кстати, я бы исправить часть autopgktest. @ Dobey прав, это не сработает.
Брайам
@dobey autopkgtest исправлено / удалено из моего ответа.
Сильвен Пино
@Braiam autopkgtest исправлено / удалено из моего ответа
Сильвен Пино,
13

Нет, не стоит останавливаться на 11.04. Конец срока службы поддержки уже с октября 2012 года. Если вам вообще нужна какая-либо поддержка, вам нужно обновить ее, по крайней мере, до 12.04 (которая будет поддерживаться еще три года).

Кроме того, даже более новые версии Ubuntu по умолчанию включают Python 3.x с целью полного удаления Python 2.x из установки по умолчанию.

У вас могут быть проблемы с запуском кода под более новой версией Python 3.x, но в целом проблем не должно быть. Как разработчик, вы также должны быть готовы решать любые подобные проблемы, независимо от того, на какой версии Ubuntu вы работаете. Любая используемая вами библиотека или сам Python могут иметь ошибку, от которой ваш код зависит поведенчески, и если эта ошибка исправлена, это может привести к тому, что ваша программа будет вести себя не так, как вы ожидали ранее.

Добей
источник
11

Трудно дать однозначный ответ без описания вашей заявки. Поскольку вы используете Python3, по крайней мере, вы не ограничены веткой Python2.x (Python 2.8 не будет).

Теперь несколько предупреждений, которые могут относиться к вашему приложению, поскольку в Python3 многие пакеты теперь устарели только потому, что лучший способ получить доступ к GLib / GObject / GIO / GTK + - это использовать Python GObject Introspection (он же PyGI).

Наконец, между различными версиями python3 все еще есть небольшие различия (например, Argparse не ведет себя точно так же с python 3.2 и 3.3.

Одна вещь, которую вы можете попробовать, это загрузить виртуальную машину 14.04 и протестировать ваш код с python3.4.

Сильвен Пино
источник
Я не буду менять свою версию Python (это невозможно), я больше обеспокоен тем, как новая версия Ubuntu может повлиять на исходный код моего программного обеспечения.
Какую версию вы официально поддерживаете, 3.2?
Сильвен Пино
Я использую версию 3.1.3
Я бы посоветовал вам протестировать ваше приложение с python3.2 (загрузите виртуальную машину 12.04 и sudo apt-get install python3). Вы также можете проверить примечание к выпуску python3.2, но, насколько мне известно, python3.2 - это всего лишь тонны улучшений по сравнению с веткой 3.1.x (argparse был одним из них)
Сильвен Пино
1
Для программ python3 обновленные версии python предоставляют еще более эффективные способы выполнения сложных задач. Например, Python3.4 представляет asyncio, и это позволит мне избавиться от действительно сложных проблем glib mainloop / threading. Я положил заметку об argparse, потому что я был в ловушке недавних изменений, но это не имеет большого значения. Итак, еще раз протестируйте ваш SW с последними версиями (3.2, затем 3.4 с 14.04), но, как и другие респонденты, говорят, что вы не должны сталкиваться с серьезными проблемами
Sylvain Pineau
2

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

Океан
источник
Можете ли вы объяснить мне, почему библиотека Python зависит от конкретной версии Ubuntu?
@begueradj Это не так, но если вы используете библиотеку Python, которая больше не поддерживается, в какой-то момент она могла быть удалена из архива Ubuntu и, следовательно, недоступна в более новой версии. Ваш код тогда потерпит неудачу. Конечно, вы можете установить пакет библиотеки из более старой версии Ubuntu или из исходного кода, чтобы решить эту проблему, хотя вы не получите никаких обновлений для него; или вы можете исправить свой код для использования другой библиотеки или написать свой собственный код для выполнения тех же функций.
Добей
как сказал @dobey, некоторые библиотеки больше не поддерживаются или их более новая версия нарушает обратную совместимость. В прошлом у меня возникали некоторые проблемы с Turbogears при обновлении до новой версии Ubuntu.
океан
0

Ubuntu 14.04 имеет пакеты python3, так что это не проблема. apt-cache search python3покажет их вам. Кроме того, вам придется читать примечания к выпуску для каждого выпуска Ubuntu между 11.04 и «более высокой версией» и искать изменения, которые повредят ваше приложение. Ничего не зная о вашем развитии, я должен кричать YMMV, но я думаю, что у вас не будет непреодолимых проблем.

waltinator
источник
0

Если вам нужно запустить старую версию Python в Ubuntu 14.04, включите репозиторий deadsnakes . Он имеет версии Python 2.3, 2.4, 2.5, 2.6, 3.1, 3.2, 3.3 для Ubuntu 14.04. Если ваше приложение представляет собой чистый код Python и не зависит от поведения других процессов, то оно должно нормально работать под старым интерпретатором.

Bain
источник
0

В качестве другого ответа вы можете использовать виртуальную среду, если у вас есть какие-либо проблемы, или вы можете использовать ту же версию Python 11.04 (скачать и собрать) в 14.04.

Океан
источник
Конечно, я могу тестировать на виртуальных машинах (я сделал это), мое программное обеспечение работает хорошо ... на данный момент ... но я понятия не имею, будет ли оно позже из-за новой версии Ubuntu.
1
Поскольку Ubuntu 14.04 является версией LTS и основана на их философии, они не будут менять версию (бомба на основной версии) и конфигурацию, я думаю, у вас не должно быть никаких проблем.
океан