Рабочий процесс переноса Python 3? - PullRequest
5 голосов
/ 22 декабря 2008

У меня есть небольшой проект, который я хочу попробовать перенести на Python 3 - как мне это сделать?

Я заставил код выполняться без предупреждений, используя python2.6 -3 (в основном это удаление вызовов .has_key()), но я не уверен в том, что лучше всего использовать инструмент 2to3.

Используйте инструмент 2to3 для преобразования этого исходного кода в синтаксис 3.0. Не редактируйте вывод вручную!

Запуск 2to3 something.py выводит diff, который сам по себе бесполезен. Использование флага --write перезаписывает что-то.py и создает резервную копию .. Кажется, что я должен сделать ..

2to3 something.py
python3.0 something.py
mv something.py.bak something.py
vim something.py
# repeat

.. что немного обыденно - в идеале я мог бы сделать что-то вроде ..

mv something.py py2.6_something.py # once

2to3 py2.6_something.py --write-file something.py
vim py2.6_something.py
# repeat

Ответы [ 2 ]

5 голосов
/ 22 декабря 2008

Ага, вы можете направить вывод 2to3 в команду patch, которая может записать измененный файл в новый файл:

mv something.py py2.6_something.py
2to3 py2.6_something.py | patch -o something.py
0 голосов
/ 22 декабря 2008

2.x должна быть вашей кодовой базой активной разработки, поэтому 2to3 должен действительно выполняться в ветке или временном каталоге. Я не уверен, почему вы хотите, чтобы версии 2.x и 3.x лежали в одном каталоге. У distutils есть скрипт build_2to3, который будет запускать 2to3 при установке 3.0.

...