Автор оригинала: Arun Ravindran.
Вас смущают долгосрочные релизы? Долгое время я не был уверен, какую версию Ubuntu скачать – последнюю версию или LTS? Я вижу, что некоторые разработчики Django смущены выпусками Django. Поэтому я подготовил это удобное руководство, чтобы помочь вам выбрать (или запутать?).
Какую версию использовать?
Django теперь стандартизирован по графику выпуска с тремя типами выпусков:
Выпуск функции : в этих выпусках будут добавлены новые функции или улучшены существующие функции. Это будет происходить каждые 8 месяцев и будет иметь 16 месяцев расширенной поддержки с момента выпуска. У них есть номера версий, такие как A.B (обратите внимание, что нет дополнительной версии).
Выпуск с долгосрочной поддержкой (LTS) : это специальные выпуски функций, которые имеют более длительную расширенную поддержку в течение трех лет с даты выпуска. Эти выпуски будут происходить каждые два года. У них есть номера версий, такие как A.2 (поскольку каждый третий выпуск функции будет LTS). Релизы LTS перекрываются в течение нескольких месяцев, чтобы облегчить миграцию.
Выпуск исправления : эти выпуски представляют собой исправления ошибок или исправления безопасности. Рекомендуется развернуть их как можно скорее. Поскольку они содержат минимальные критические изменения, эти обновления должны быть безболезненными. У них есть номера версий, такие как A.B.C
Дорожная карта Django, представленная ниже, должна прояснить подход к выпуску:
Даты ориентировочные и могут измениться. Это не официальная диаграмма, это что-то, что я создал для своего понимания.
Главный вывод заключается в том, что Django 1.11 LTS будет последним выпуском, поддерживающим Python 2, и будет поддерживаться до апреля 2020 года. Последующие версии будут использовать только Python 3.
Правильная версия Django для вас будет зависеть от того, как часто вы можете обновлять свою установку Django и какие функции вам нужны. Если ваш проект активно развивается и версию Django можно обновлять не реже одного раза в 16 месяцев, вам следует установить последний выпуск функции, независимо от того, является ли он LTS или не-LTS.
В противном случае, если ваш проект разрабатывается время от времени, вам следует выбрать самую последнюю версию LTS. Обновление зависимости Django вашего проекта от одной версии функции до другой может оказаться нетривиальной задачей. Итак, прочтите примечания к выпуску и планируйте соответственно.
В любом случае убедитесь, что вы устанавливаете выпуски исправлений сразу после их выпуска. Теперь, если вы все еще используете Python 2, продолжайте читать.
Python 3 преодолел переломный момент
Когда я решил использовать Python 3 только во время написания моей книги «Шаблоны проектирования и передовой опыт Django» в 2015 году, это было время, когда Python 2 против Python 3 горячо обсуждался. Однако мне Python 3 казался намного более чистым без загадочного синтаксиса, такого как методы класса с именем __unicode__
и классы, которые должны быть производными от родительского класса object
.
Теперь это совсем другая картина. Мы только что увидели, что Django больше не поддерживает Python 2, за исключением последней версии LTS. Это большой толчок для многих магазинов Python, чтобы рассмотреть Python 3.
Многие платформы обновили свой интерпретатор Python по умолчанию. Начиная с 1 марта 2018 года, Python 3 будет объявлен “питоном” по умолчанию в установках Homebrew. ArchLinux полностью перешел на Python 3 с 2010 года.
Fedora перешла на Python 3 по умолчанию в качестве системы по умолчанию, начиная с версии 23 . Несмотря на то, что команда python
запускает python3
, символическая ссылка /usr/bin/python
по-прежнему будет указывать на python2
для Обратная совместимость. Поэтому, вероятно, будет хорошей идеей использовать идиому #!/Usr/bin/env python
в сценариях оболочки.
26 апреля 2018 года, когда будет выпущен Ubuntu 18.04 LTS (Bionic Beaver), планируется использовать Python 3.6 по умолчанию . В дальнейшем ожидается, что следующий тестируемый выпуск Debian – Debian 10 (Buster) перейдет на Python 3.6 .
Переходя к пакетам, Python 3 Wall of Superpowers показывает, что на момент написания статьи при поддержке 190 из 200 пакетов мы есть почти все популярные пакеты Python на Python 3. Единственный примечательный оставшийся пакет – это supervisor, который вот-вот станет зеленым в supervisor 4.0 (не выпущен) .
Распространенные блокаторы миграции Python 3
Возможно, вы знаете хотя бы об одном проекте, который все еще находится на Python 2. Это может быть проект с открытым исходным кодом или внутренний проект, который может зависнуть в Python 3 по ряду причин. Я сталкивался с рядом таких проектов, и вот мой ответ на такие причины:
Некоторые очень большие и сложные проекты, такие как NumPy или Django, были успешно перенесены. Вы можете изучить стратегии миграции таких проектов, как Django . Django поддерживал общую базу кода для Python 2 и 3, используя шесть (2 ×>
Это ближе, чем вы думаете. Часы Python показывают, что для поддержки Python 2 осталось чуть больше 2 лет и 2 месяцев.
Фактически, у вас было много времени. Прошло десять лет с момента анонса Python 3. Это много совпадений для перехода от одной версии к другой.
В сегодняшнем мире «двигайся быстро и ломай» многие проекты решают резко прекратить поддержку и просят вас выполнить миграцию, как только выйдет новая версия. Это гораздо более реалистичное предположение для предприятий, которым требуется гораздо больше планирования и тестирования.
Но вы уже знаете большую часть этого! Вам может потребоваться около 10 минут, чтобы изучить различия. Фактически, я написал сообщение, чтобы направить программистов Django на Python 3. Небольшим проектам Django/Python 2 требуются только тривиальные изменения для работы на Python 3.
Вы можете увидеть много старых сообщений в блогах о том, что Python 3 глючит или работает медленно. Что ж, какое-то время это было неправдой. Он не только чрезвычайно стабилен и не содержит ошибок, но и фактически используется в производстве несколькими компаниями. С точки зрения производительности он становится быстрее с каждым выпуском, поэтому в большинстве случаев он быстрее, чем Python 2, и медленнее в некоторых.
Конечно, в Python 3 добавлено множество замечательных новых функций и библиотек. Вы можете изучать их по мере необходимости. Я бы рекомендовал прочитать примечания к выпуску, чтобы понять их. Скоро отмечу своих фаворитов.
Некоторые люди придерживаются философии, что если никто не спрашивает, то никому нет дела. Что ж, им все равно, если приложение, которое они запускают, основано на неподдерживаемой технологии. Лучше спланировать возможный переход, чем торопиться с более высоким бюджетом.
Вы что-то упускаете?
Для меня самой большой причиной перехода было то, что все самые новые и лучшие функции были добавлены в Python 3. Три моих любимых эксклюзивных функции в Python 3:
asyncio : одна из самых крутых технологий, которые я недавно освоил. Процесс обучения иногда бывает умопомрачительным. Но прирост производительности в правильных ситуациях невероятен.
f-строки : они настолько выразительны, что вы захотите использовать их везде. Мгновенная любовь!
dict : новая компактная реализация dict, которая использует меньше памяти и упорядочена!
Да, FOMO реально.
Помимо моих личных причин, я бы порекомендовал всем перейти на миграцию, чтобы сообщество извлекло выгоду из вложений усилий в общую базу кода. Кроме того, мы все можем быть последовательны в том, какой Python рекомендовать новичкам. Потому что …
Должен быть один – и желательно только один – очевидный способ сделать это. Хотя сначала этот способ может быть не очевиден, если вы не голландец.
Эта статья содержит отрывок из будущего второго издания книги «Шаблоны дизайна Django и передовые методы» Аруна Равиндрана.