Как правильно использовать 2to3 для python?
У меня есть некоторый код в Python 2.7, и я хочу преобразовать все это в код Python 3.3. Я знаю, что 2to3 можно использовать, но я точно не знаю, как его использовать. Спасибо за любую помощь
5 ответов
Как написано в документах 2to3, для перевода всего проекта из одного дерева каталогов в другое используйте:
$ 2to3 --output-dir=python3-version/mycode -W -n python2-version/mycode
Если у вас нет 2to3
на вашем пути, вы можете напрямую вызвать lib2to3
:
python -m lib2to3 directory\file.py
И как упоминают документы (и другие ответы), вы можете использовать некоторые флаги для дополнительной настройки:
-w
флаг включения обратной записи, который применяет изменения к файлу-n
отключить резервное копирование
(есть еще несколько флагов; см. документацию для получения дополнительной информации.)
Перед запуском важно иметь резервную копию
2to3
.
- Если вы используете git, сделайте коммит.
- В противном случае сделайте резервную копию ваших файлов.
Сначала запустите 2to3 в "мягком режиме", чтобы увидеть, что он на самом деле будет делать:
$ 2to3 /path/to/your/project
Если вас устраивает то, что он будет делать, вы можете запустить 2to3 "по-настоящему":
$ 2to3 --write --nobackups /path/to/your/project
И теперь вы как следует побежали 2to3
:)
В Windows:
python {path_to_python}\tools\scripts\2to3.py --output-dir={output_dir} -W -n {input_dir}
path_to_python
= каталог, в котором установлен Python
output_dir
= каталог для вывода скриптов Python3
input_dir
= каталог, откуда читать скрипты Python2
Чтобы преобразовать все файлы Python 2 в каталоге в 3, вы можете просто запустить $ C:\Program Files\Python\Tools\Scripts\2to3.py -w -n.
внутри каталога, который вы хотите перевести. Было бы пропустить все не .py
файлы в любом случае, а остальные преобразуйте.
примечание: удалите флаг -n, если вы хотите файл резервной копии тоже.
Запустить его очень просто! Я буду считать, что он у вас уже установлен, и пошагово объясню, как действовать дальше:
- Откройте терминал (или cmd для пользователей win) внутри основной папки, содержащей файлы, которые вы хотите преобразовать.
напримерC:\Users\{your_username}\Desktop\python2folder
- Тип
python {your_2to3.py_install_directory} -w .\
например, в моем случае (win10) это будет:
python C:"\Program Files"\Python39\Tools\scripts\2to3.py -w .\
Это заставит программу сканировать весь каталог (а также подкаталоги) и автоматически преобразовать все, что написано на Python2, в Python3.
-w
Флаг заставляет скрипт применять изменения, создавая новые преобразованные файлы. Так что удалите это, вы хотите просто просканировать и посмотреть, что нужно преобразовать (но на самом деле ничего не делая)
Если вы хотите преобразовать только один файл вместо целых папок, просто замените
.\
за
python2_file_name.py
:
например
python {your_2to3.py directory} -w python2_file_name.py
Кроме того, по умолчанию он создает файл.bak для всего, что преобразует. Настоятельно рекомендуется сохранить это так, поскольку любое преобразование подвержено ошибкам, но если вы хотите отключить автоматическое резервное копирование, вы также можете добавить
-n
флаг.
например
python C:"\Program Files"\Python39\Tools\scripts\2to3.py -w -n python2_file_name.py
3. Готово!
Чтобы преобразовать код из python2 в python3, сначала установите пакет 2to3, используя
pip install 2to3
Затем запустите эту команду в каталоге, где находится ваш код Python.
2to3 -w -n .
- -w флаг для включения обратной записи, которая применяет изменения к файлу
- -n, чтобы отключить резервное копирование
Сначала установите python 2to3
пакет:
C:\Default> pip install 2to3
Чем преобразовать ваш python2
файл в python3
в вашей новой папке, т.е. python3-version/mycode
C:\Default> 2to3 your_file_name.py --output-dir=python3-version/mycode -w -n
Твой новый python3
файл можно увидеть в новой папке, т.е. python3-version/mycode
Файл python 2to3.py в основном находится в каталоге C:/Program Files/Python/Tools/scripts, если у вас уже установлен python. У меня есть Python 3.6 и 2to3 находится в каталоге C:/Program Files/Python36/Tools/scripts. Чтобы преобразовать определенный код Python 2 в Python 3, перейдите в командную строку, измените каталог на C: / Program Files / Python36 / Tools / scripts, где находится файл 2to3. Затем добавьте следующую команду: python 2to3.py -w (каталог для вашего скрипта).
например. C:\Program Files\Python36\Tools\scripts> python 2to3.py -w C: Пользователи \Iykes\desktop\test.py.
здесь '-w' обеспечивает создание файла резервной копии для вашего файла.