Вопрос

У меня есть небольшой проект, который я хочу попробовать портировать на 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.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top