Python 3 portar fluxo de trabalho?
-
23-08-2019 - |
Pergunta
Eu tenho um pequeno projeto que eu quero tentar portar para Python 3 - como faço para ir sobre este
? Eu fiz fez a executar o código sem avisos usando python2.6 -3
(principalmente a remoção de chamadas .has_key()
), mas eu não tenho certeza a melhor maneira de usar a ferramenta 2to3.
Use a ferramenta 2to3 para converter este código-fonte para 3,0 sintaxe. Não edite manualmente a saída!
Running 2to3 something.py
gera um diff, o que não é útil, por si própria. Usando o --write
substitui bandeira something.py e cria um backup .. Parece que eu tenho que fazer ..
2to3 something.py
python3.0 something.py
mv something.py.bak something.py
vim something.py
# repeat
.. que é um round-a-bout bit - Idealmente, eu poderia fazer algo assim ..
mv something.py py2.6_something.py # once
2to3 py2.6_something.py --write-file something.py
vim py2.6_something.py
# repeat
Solução
Aha, você pode canalizar a saída 2to3 para o comando patch
, que pode escrever o arquivo modificado para um novo arquivo:
mv something.py py2.6_something.py
2to3 py2.6_something.py | patch -o something.py
Outras dicas
2.x deve ser a sua base de código de desenvolvimento ativo, então 2to3 deve realmente ser executado em um ramo ou diretório temporário. Eu não tenho certeza por que você gostaria de ter a 2.xe 3.x versões espalhadas no mesmo diretório. distutils tem um script build_2to3 que será executado 2to3 em um 3.0 instalar.