Рабочий процесс переноса Python 3?
-
23-08-2019 - |
Вопрос
У меня есть небольшой проект, который я хочу попробовать портировать на 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
Решение
Ага, вы можете передать вывод 2to3 в patch
команда, которая может записать измененный файл в новый файл:
mv something.py py2.6_something.py
2to3 py2.6_something.py | patch -o something.py
Другие советы
2.x должна быть вашей кодовой базой активной разработки, поэтому 2to3 действительно следует запускать в ветке или временном каталоге.Я не уверен, почему вы хотели бы, чтобы версии 2.x и 3.x лежали в одном каталоге.в distutils есть скрипт build_2to3, который будет запускать 2to3 при установке версии 3.0.