2015-09-15 1 views
1

Недавно я работал над своим веб-приложением Django, когда обнаружил, что по какой-то причине Django работал только тогда, когда я использовал python 2.x. Интерпретатор, но все это время я думал, что он был настроен для Python 3 и, таким образом, кодировался так.Django и модуль совместимости с шестью версиями Python

Итак, я тестировал его с помощью print(sys.version()) и был удивлен, когда вышел Python 2.7. После небольшого рытья я обнаружил, что Django использует модуль six. Мой первый вопрос: почему Django использует это? Есть ли какая-то причина, кроме просто упрощения для программиста? Мой второй вопрос, так как я рассматривал его как Python 3, должен ли я вернуться и изменить свой код, чтобы он был чистым Python 2? Или это не имеет значения?

P.s. Я понимаю, как работает шесть, но было бы здорово узнать об этом немного больше.

Спасибо.

ответ

2

Django 1.5 - первая версия Django для поддержки Python 3. Тот же код работает как на Python 2 (≥ 2.6.5), так и на Python 3 (≥ 3.2) благодаря шести уровням совместимости.

Написание совместимого кода намного проще, если вы нацеливаете Python ≥ 2.6. Django 1.5 предлагает инструменты совместимости, такие как django.utils.six, который представляет собой настраиваемую версию шести модулей. Для удобства были добавлены переадресационные псевдонимы в Django 1.4.2. Если ваше приложение использует эти инструменты, потребуется Django ≥ 1.4.2.

Для Подробнее прочитать Porting to Python 3

0

Какой Python версии система использует не имеет ничего общего делать с шести модулей. Это то, что Django использует внутри, чтобы иметь возможность работать как с 2.7, так и с 3.x.

Если вы хотите использовать Python 3 локально, вам нужно настроить свою систему для этого. Это может означать, например, создание вашего virtualenv с помощью Python 3.

Смежные вопросы