Как правильно использовать 2to3 для python?

У меня есть код на python 2.7, и я хочу преобразовать его в код python 3.3. Я знаю, что 2to3 можно использовать, но я точно не знаю, как его использовать.


person GhostFrag1    schedule 08.12.2013    source источник


Ответы (9)


Установите следующий модуль, который добавляет команду 2to3 непосредственно в entry_points.

pip install 2to3

Как написано в документах 2to3, для перевода всего проекта из одного дерева каталогов к другому, используйте:

2to3 --output-dir=python3-version/mycode -W -n python2-version/mycode
person Faruk Sahin    schedule 08.12.2013
comment
Могу ли я использовать файл 2to3, который находится в папке сценариев Python 2.7? Потому что я слышал, что cmd необходим. - person GhostFrag1; 08.12.2013
comment
Да, вы можете использовать его. Вы должны открыть консоль (cmd, если окна) и выполнить этот файл, указав правильные аргументы, как написано в ответе. - person Faruk Sahin; 08.12.2013
comment
Все еще не слишком уверен, как именно использовать. Не могли бы вы предоставить несколько дополнительных деталей, пожалуйста? - person GhostFrag1; 09.12.2013
comment
Я предполагаю, что вы находитесь в среде Windows, так как вы упомянули о cmd. По сути, 2to3 — это скрипт на Python, который вам нужно запустить через консоль. Если у вас возникли проблемы с поиском 2to3 в пути, попробуйте аргументы python path/to/script/2to3.py. Это предполагает, что python будет на пути. Если вы столкнулись с дальнейшими проблемами, попробуйте поискать в Google, как выполнить скрипт Python в Windows или, точнее, как выполнить 2to3 в Windows. - person Faruk Sahin; 09.12.2013
comment
Кажется, я получаю сообщение об ошибке RefactoringTool: не удается открыть «Каталог» Нет такого файла или каталога - person GhostFrag1; 09.12.2013
comment
@FarukSahin Когда я сделал это в Ubuntu, я получил папку с именем =, которая содержала преобразованные файлы py3, поэтому мне пришлось переименовать папку в py3VersionMyCode. - person mLstudent33; 07.09.2019
comment
Это относится ко всем фиксаторам? Например, когда я запускал его изначально, он не преобразовывал мои операторы exclude, и мне пришлось сделать это с помощью -f, кроме. - person demongolem; 09.04.2020

Если на вашем пути нет 2to3, вы можете напрямую вызвать lib2to3:

python -m lib2to3 directory\file.py

И, как упоминается в документах (и других ответах), вы можете использовать некоторые флаги для больше настроек:

  • флаг -w для включения обратной записи, которая применяет изменения к файлу
  • -n для отключения резервного копирования

(есть еще несколько флагов; см. документы для получения дополнительной информации.)

person Graham    schedule 23.11.2018

Перед запуском 2to3 важно иметь резервную копию.

  1. Если вы используете git, сделайте коммит.
  2. В противном случае сделайте резервную копию ваших файлов.

Во-первых, запустите 2to3 в мягком режиме, чтобы посмотреть, что он на самом деле сделает:

$ 2to3 /path/to/your/project

Если вы довольны тем, что он будет делать, вы можете запустить 2to3 по-настоящему:

$ 2to3 --write --nobackups /path/to/your/project

И теперь вы правильно запустили 2to3 :)

person aude    schedule 16.09.2019

В 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

person szdrnja    schedule 22.02.2018

Чтобы преобразовать все файлы Python 2 в каталоге в 3, вы просто можете запустить $ C:\Program Files\Python\Tools\Scripts\2to3.py -w -n. внутри каталога, который вы хотите перевести. В любом случае все файлы, отличные от .py, будут пропущены, а остальные преобразованы.
Примечание: удалите флаг -n, если вам нужен файл резервной копии.

person Nuhman    schedule 04.11.2017
comment
Если вы удалите флаг -w, файл вообще не будет преобразован. Удаление этого флага действует как предварительный просмотр ваших потенциальных изменений. - person Leonardo Lopez; 28.03.2018
comment
@ Леонардо Лопес, ты прав. Не -w, а -n используется для отключения функции резервного копирования. Спасибо. - person Nuhman; 28.03.2018

Чтобы преобразовать код из python2 в python3, сначала установите пакет 2to3, используя

pip install 2to3

Затем запустите эту команду в каталоге, где находится ваш код Python.

2to3 -w -n .
  • Флаг -w для включения обратной записи, которая применяет изменения к файлу
  • -n отключить резервное копирование
person Sohaib    schedule 05.11.2020
comment
В случае Linux это 2to3 -w -n ./ - person nish; 15.06.2021

Сначала установите пакет 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

person Shivam Bharadwaj    schedule 15.05.2020

Запустить его очень просто! Я буду считать, что он у вас уже установлен, и пошагово объясню, как действовать после этого:

  1. Откройте терминал (или cmd для пользователей win) в основной папке, содержащей файлы, которые вы хотите преобразовать.

e.g. C:\Users\{your_username}\Desktop\python2folder

  1. Тип

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:

e.g. python {your_2to3.py directory} -w python2_file_name.py

Кроме того, по умолчанию он создает файл .bak для всего, что он конвертирует. Настоятельно рекомендуется оставить его таким, поскольку любое преобразование подвержено ошибкам, но если вы хотите отключить автоматическое резервное копирование, вы также можете добавить флаг -n.

e.g. python C:"\Program Files"\Python39\Tools\scripts\2to3.py -w -n python2_file_name.py

3.Готово!

person luzclasil    schedule 29.11.2020

Файл 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:Users\Iykes\desktop\test.py.

'-w' здесь обеспечивает создание файла резервной копии для вашего файла.

person Yidana Isaac    schedule 16.01.2018
comment
Если вы удалите флаг -w, файл вообще не будет преобразован. Удаление этого флага действует как предварительный просмотр ваших потенциальных изменений. - person Leonardo Lopez; 28.03.2018