Observe que não estou mais atualizando esta resposta. Tenho uma sessão de perguntas e respostas do Python 3 muito mais longa no meu site pessoal em http://python-notes.curiousefficiency.org/en/latest/python3/questions_and_answers.html
Resposta anterior:
(Atualização de status, setembro de 2012)
Nós (ou seja, os desenvolvedores principais do Python) previmos quando o Python 3.0 foi lançado que levaria cerca de 5 anos para que o 3.x se tornasse a opção "padrão" para novos projetos na série 2.x. Essa previsão é a razão pela qual o período de manutenção planejada para a versão 2.7 é tão longo.
A versão original do Python 3.0 também apresentou alguns problemas críticos com baixo desempenho de IO que a tornaram efetivamente inutilizável para fins mais práticos, por isso faz mais sentido iniciar a linha do tempo a partir da versão do Python 3.1 no final de junho de 2009. (Aqueles Os problemas de desempenho de E / S também são a razão pela qual não há versões de manutenção 3.0.z: não há uma boa razão para alguém querer manter o 3.0 em vez de atualizar para o 3.1).
No momento da redação deste artigo (setembro de 2012), isso significa que estamos atualmente um pouco mais de três anos no processo de transição, e essa previsão ainda parece estar no caminho certo.
Enquanto as pessoas que digitam o código Python 3 são mordidas com mais frequência por alterações sintáticas como print
se tornar uma função, isso na verdade não é um aborrecimento para a transferência de bibliotecas, porque a 2to3
ferramenta de conversão automatizada lida com isso com bastante satisfação.
O maior problema na prática é na verdade semântico: o Python 3 não permite que você jogue rápido e livre com codificações de texto da mesma forma que o Python 2. Esse é o seu maior benefício em relação ao Python 2, mas também a maior barreira para a portabilidade: você precisa corrigir os problemas de manipulação do Unicode para que uma porta funcione corretamente (enquanto no 2.x, grande parte desse código produzia dados incorretos silenciosamente com entradas não ASCII, dando a impressão de funcionar, especialmente em ambientes onde dados não ASCII são incomuns).
Até a biblioteca padrão no Python 3.0 e 3.1 ainda apresentava problemas de manipulação de Unicode, dificultando a portabilidade de muitas bibliotecas (especialmente aquelas relacionadas a serviços da web).
O 3.2 abordou muitos desses problemas, fornecendo um alvo muito melhor para bibliotecas e frameworks como o Django. O 3.2 também trouxe a primeira versão de trabalho wsgiref
(o principal padrão usado para comunicação entre servidores da Web e aplicativos da Web escritos em Python) para 3.x, que era um pré-requisito necessário para adoção no espaço da Web.
Dependências chave como NumPy e SciPy já foram portados, ferramentas de instalação e gerenciamento de dependência gosto zc.buildout
, pip
e virtualenv
estão disponíveis para 3.x, o lançamento Pyramid 1.3 suporta Python 3.2, a próxima Django 1.5 versão inclui suporte experimental Python 3, ea 12,0 liberação de a estrutura de rede Twisted abandonou o suporte ao Python 2.5 para abrir o caminho para a criação de uma versão compatível com o Python 3.
Além do progresso nas bibliotecas e estruturas de compatibilidade do Python 3, a popular implementação do interpretador PyPy compilada pelo JIT está trabalhando ativamente no suporte ao Python 3.
As ferramentas para gerenciar o processo de migração também melhoraram significativamente. Além da 2to3
ferramenta fornecida como parte do CPython (que agora é considerada mais adequada para conversões únicas de aplicativos que não precisam manter suporte para a série 2.x), há também o python-modernize
que usa a 2to3
infraestrutura para direcionar o (grande) subconjunto comum do Python 2 e Python 3. Essa ferramenta cria uma única base de código que será executada no Python 2.6+ e no Python 3.2+ com a ajuda da six
biblioteca de compatibilidade. A versão do Python 3.3 também elimina uma das principais causas de "ruído" ao migrar aplicativos existentes compatíveis com Unicode: o Python 3.3 mais uma vez suporta o prefixo 'u' para literais de string (na verdade, nãonada em Python 3 - é apenas sido restaurada para evitar inadvertidamente fazer a migração para o Python 3 mais difícil para os usuários que tinham distinguido já correctamente o seu texto e literais binários em Python 2).
Então, na verdade, estamos muito felizes com o andamento das coisas - ainda faltam quase dois anos para o prazo original e as mudanças estão ocorrendo muito bem em todo o ecossistema Python.
Como muitos projetos não selecionam adequadamente os metadados do Índice de Pacotes Python e alguns projetos com mantenedores menos ativos foram forçados a adicionar suporte ao Python 3, os scanners PyPI puramente automatizados ainda oferecem uma visão muito negativa do estado da biblioteca do Python 3 Apoio, suporte.
Uma alternativa preferida para obter informações sobre o nível de suporte do Python 3 no PyPI é http://py3ksupport.appspot.com/
Esta lista é curada pessoalmente por Brett Cannon (desenvolvedor de longa data do Python), responsável por metadados incorretos do projeto, suporte ao Python 3 que está nas ferramentas de controle de código-fonte, mas ainda não em um release oficial e nos projetos que têm garfos mais atualizados ou alternativas que suportam o Python 3. Em muitos casos, as bibliotecas que ainda não estão disponíveis no Python 3 não possuem dependências-chave e / ou a falta de suporte ao Python 3 em outros projetos diminui a demanda do usuário (por exemplo, uma vez que a estrutura principal do Django esteja disponível em As ferramentas relacionadas ao Python 3, como South e django-aipo, são mais propensas a adicionar suporte ao Python 3, e a disponibilidade do suporte ao Python 3 no Pyramid e no Django aumenta a probabilidade de o suporte ao Python 3 ser implementado em outras ferramentas, como gevent).
O site em http://getpython3.com/ inclui excelentes links para livros e outros recursos para o Python 3, identifica algumas bibliotecas e estruturas principais que já suportam o Python 3 e também fornece algumas informações sobre como os desenvolvedores podem procurar ajuda financeira do PSF ao portar projetos importantes para o Python 3.
Outro bom recurso é a página wiki da comunidade sobre fatores a serem considerados ao escolher uma versão do Python para um novo projeto: http://wiki.python.org/moin/Python2orPython3