Python - нужно ли запускать новый проект непосредственно в Python 3.x?

Какую версию Python вы можете рекомендовать для долгосрочного (летнего) проекта? Следует ли использовать 2.6+ или 3.x уже стабильно? (требуются только стандартные библиотеки)

ОБНОВЛЕНИЕ: согласно приведенным ниже ответам, Python 3.x все еще имеет критические ошибки. Также см. Список ошибок Python.

Ответ 1

Я думаю, это сводится к тому, насколько тесно вы можете контролировать среду, в которой будет работать ваше приложение. Если вы создаете часть программного обеспечения, в которой ваш клиент будет "устанавливать" python для запуска вашего программного обеспечения, вы также можете использовать последнюю версию (Python 3.x). Если вы ориентируетесь на существующие установки python, то выбор 2.5 или 2.6 совместимости будет лучше, поскольку они более широко распространены.

Python 3.x стабилен. Это не проблема. Проблема с этим - совместимость. Если у вас есть возможность использовать самые последние и самые лучшие, вам следует использовать новую версию. Для новых проектов выбор 3.x был бы очевидным.

Ответ 2

Вот почему вы должны использовать Python 3.x:

Python 2.x:

>>>True = False
>>>True
False

Python 3.x:

>>> True = False
  File "<stdin>", line 1
SyntaxError: assignment to keyword

Источник: Незначительная языковая функция

Предрассудки: Но так много пакетов еще не готово к Python 3

Это (а) неверно (источник) и (b) не важно для новичков.

Ответ 3

В Python 3 нет ничего плохого, но многие библиотеки еще не были перенесены. Например, из PyGame FAQ:

Поддержка Python 3 является неполной и все еще находится на стадии разработки

И из NumPy:

Поддержка Python 3 запланирована, но еще не запланирована.

Все зависит от того, насколько важны сторонние библиотеки для вас, и еще ли они переносятся.

Ответ 4

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

Я думаю, что сейчас лучше всего написать код Python2 и протестировать его в тестовом режиме Python3 (запустите python -3 program.py). Таким образом, теперь вам не нужно беспокоиться о недостающих библиотеках, и вы можете конвертировать вашу программу в Python3, как только это имеет смысл.

Ответ 5

THC4k упоминает 2to3, и я просто хотел указать, что там также 3to2 package. Я никогда не использовал ни одного пакета, но я слышал, что 3to2 более прощающий, чем 2to3.

Изменить: просто хотелось подчеркнуть то, что предложили другие. Если вы решите использовать один из этих конвертеров для выпуска вашего программного обеспечения на 2.6 или 3.0, вы, вероятно, захотите иметь надежную систему тестирования (unittest, doctest, и т.д.) с приличным испытанием, чтобы спать спокойно ночью!

Ответ 6

Если вы сейчас начинаете свой проект, и все сторонние библиотеки, которые вы хотите использовать, уже портированы на Python 3, а ваша целевая операционная система (я действительно имею в виду дистрибутив Linux) пакетов Python 3, то уверен.

Вперед, используйте Python 3.