Должны ли мы использовать Python 2.6 или 2.7 или 3.x? [закрыто]

25

Я использую версию python 2.6 , а также 2.7 и 3.x. Обычно я использую python для некоторых тривиальных программ. Я понимаю, что есть существенная разница между 2.x и 3.x. Мне бы очень хотелось знать, если я собираюсь сделать большой проект с Python, какую версию Python я должен использовать?

Должен ли я обновиться до 2.7, или перейти на 3.x или остаться с 2.6?

Решение должно основываться на следующих условиях:

  1. Количество пользователей в интернете как сообщества. Больше пользователей означает больше пакетов с открытым исходным кодом и помощь от них.

  2. Функциональность.

  3. Поддержка со стороны официальной команды разработчиков.

  4. Совместимость для существующего модуля / пакета.

Благодарность!

lamwaiman1988
источник
5
Может кто-нибудь указать на какие-либо полезные изменения, сделанные в Python 3.x?
lamwaiman1988
1
Вы упоминаете, что знаете, что проблема заключается в совместимости с существующими модулями, но вы не говорите нам, на какие существующие модули опирается ваш код. Этот вопрос в значительной степени без ответа.
Wooble
2
не по теме; рекомендации и горилла против акулы в одном вопросе вау!
3
Этот вопрос и его ответы будут полезны только в течение небольшого промежутка времени. То, что имеет смысл сейчас, может не иметь большого смысла через год, так как 3.x становится более зрелым.
Брайан Оукли
Отмечая, что (а) вопрос по-прежнему актуален в 2014 году (например, RobotFramework не работает с Python 3) и (б) закрытие этого вопроса сохраняет эту страницу устаревшей, потому что - хотя она и занимает высокое место в результатах поиска Google - новые ответы не может быть опубликовано
Боб Стейн

Ответы:

27

Я бы предложил Python 2.7 сам. Это последний выпуск в серии Python 2.x. Большинство модулей Python предназначены для работы с Python 2.x. Есть движение, чтобы попытаться перейти на Python 3, но любой из модулей Python 3 написан как для 2, так и для 3. Не забывайте не использовать старые функции, которые недоступны в Python 3, так что вы можете просто 2to3 свой код заставить его работать на Python 3.

Если вы работаете с Python 3, вы один из первых пользователей, и вам, вероятно, придется сказать другим, чтобы загрузить Python 3 (на многих компьютерах будет установлен только Python 2). С другой стороны, новые функции появятся только в Python 3. Python 2 постоянно поддерживается. Поэтому я бы не советовал использовать Python 2 через 10 лет.

Если вы хотите следить за пакетами Python и их совместимостью с Python 3, вы можете следить за этим сайтом: http://python3wos.appspot.com/

jsternberg
источник
Django не поддерживает 3.x? Пользователь, знакомый с django, просто не может использовать 3.x?
lamwaiman1988
эй, как правило, когда выходит новая версия, это означает, что она лучше, чем предыдущая. И почему Python выпускается в серии 2.x, а другой в серии 3.x? Какова реальная разница в них.
ГОРЯЧИЙ
4
В Python 3 внесены некоторые полезные изменения в язык, но они не имеют обратной совместимости с некоторыми функциями Python 2. Поэтому некоторые вещи были удалены, а некоторые добавлены (и удаленные вещи делают их несовместимыми).
Йтернберг
+1 для 2.7, лучшее соотношение совместимости (по крайней мере для библиотек, которые я использую), пока 3 не станет более распространенным
wildpeaks
@Ashinkn Изменения можно найти здесь docs.python.org/3.0/whatsnew/3.0.html . Основным нарушением совместимости является отказ от использования Unicode (в отличие от ASCII) в качестве строкового типа по умолчанию. Где люди использовали строки как byte [] до того, как появился новый тип bytearray. Кроме того, любые 2x строки, явно определенные как юникод, необходимо заменить на обычные строки.
Эван Плейс,
19

Мое мнение: нам нужно начать привлекать людей к Python 3, и если есть библиотеки, несовместимые с Python 3, нам нужно начать делать это не так.

Python 3 - это будущее языка, и чем больше кода мы пишем с его использованием, тем лучше.

Musaab
источник
Нам нужен единственный интерпретатор, который совместим с обеими версиями Python и может их интеллектуально анализировать. То есть указанный интерпретатор будет компилировать и python2, и python3 в один и тот же байт-код, чтобы они были совместимы, что позволило бы использовать python3 с библиотекой python2. Если C, C ++ и Java могут это сделать, то и Python может.
Брэден Бест
4

Django теперь «экспериментально» поддерживает Python 3.2+, как вы можете видеть из их постов здесь .

Учитывая это, и тот факт, что Python 3.x является будущим языка, я бы сказал, что Python 3 - лучший сейчас.

CorayThan
источник
2

Для каждого проекта проверьте, все ли библиотеки, необходимые для проекта, уже получили поддержку Python 3.x, затем используйте python 3.x, потому что это будущее, и это последняя официальная стабильная версия.

Еще используйте все, что вам нужно для совместимости библиотеки.

CND
источник
2

На самом деле не имеет значения, используете ли вы Python 2.7 или Python 3. Если вы не используете старые функции в Python 2.7, вы можете просто 2–3 своего кода запустить его на Python 3.

Рамчандра Апте
источник
0

Я был в той же лодке ранее, и это то, что я нашел. Python 2.6, 2.7 и 3.2 могут быть установлены бок о бок с помощью MacPorts и могут легко переключаться. (Я пользователь Mac). Ищите альтернативы Macports для вашей платформы.

ThinkCode
источник
0

До тех пор, пока в 3.x не будет встроен мост, позволяющий прозрачно использовать пакеты 2.7, перемещение чревато опасностью, потому что язык - это все, что было внесено в него. Формальные соображения и чистота ничтожны в сравнении. Такой прозрачный мост вряд ли произойдет из-за педантичного упрямства и игнорирования базы пользователей.

Дон гейтли
источник
Такой прозрачный мост недостижим. Пакеты 2to3 и шесть обеспечивают достаточное соединение, но далеко не прозрачны.
Мартейн Питерс