
Acredito que a maior dúvida quando começamos a programar em Python seja qual versão utilizar.
Utilizar uma versão estável e consolidada como a versão 2 ou uma versão mais nova com melhorias como a versão 3?
Muitos vão falar que é a versão 3, mas o problema nessa versão é a retrocompatibilidade.
A retrocompatibilidade é quando uma nova versão de software não tem compatibilidade com algumas ou todas as funções que existem na versão anterior.
No caso do Python quando existe o upgrade da versão 2 para 3, algumas funcionalidades param de funcionar, alguns casos com simples ajustes de sintaxe outros alteram a assinatura do método e na pior das hipóteses uma alteração na nomenclatura do método.
Qual das versões utilizar?
Para quem está começando um projeto, com certeza a versão mais atual 3 é a mais indicada.
Com a versão mais nova já podemos nos beneficiar das melhorias implementadas.
Agora para quem já está utilizando a versão 2, seria interessante instalar a versão 3, criando uma branch e migrando aos poucos.
Migração.

Uma forma de migrar é criar uma branch e ajustar as funções que não são compatíveis com a nova versão.
Mas em alguns casos, alguns métodos vão funcionar somente em uma das versões.
Um exemplo é o método input() na versão 2 e a que na versão 3 foi alterado para raw_input().
Uma forma de contornar isso é fazendo um “If maroto” verificando a versão utilizado:
from sys import version_info
if version_info.major > 2:
nome = input(‘Nome: ‘)
else:
nome = raw_input(‘Nome: ‘)
Pode não ser uma forma elegante de se escrever o código, mas é somente uma demonstração de uma solução rápida, podemos aprimorar essa técnica.
Conclusão.
Se está iniciando um novo projeto Python não pense duas vezes, comece com a versão 3. A versão Python 3 já está bem estável e pode ser utilizada sem medo, já para quem está utilizando a versão Python 2 deve começar a planejar uma migração, pois a versão 2 pode ser descontinuada em 2020.