У меня есть код на python 2.7, и я хочу преобразовать его в код python 3.3. Я знаю, что 2to3 можно использовать, но я точно не знаю, как его использовать.
Как правильно использовать 2to3 для python?
Ответы (9)
Установите следующий модуль, который добавляет команду 2to3 непосредственно в entry_points.
pip install 2to3
Как написано в документах 2to3, для перевода всего проекта из одного дерева каталогов к другому, используйте:
2to3 --output-dir=python3-version/mycode -W -n python2-version/mycode
=
, которая содержала преобразованные файлы py3, поэтому мне пришлось переименовать папку в py3VersionMyCode
.
- person mLstudent33; 07.09.2019
Если на вашем пути нет 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, если вам нужен файл резервной копии.
-w
, а -n
используется для отключения функции резервного копирования. Спасибо.
- person Nuhman; 28.03.2018
Чтобы преобразовать код из 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
Запустить его очень просто! Я буду считать, что он у вас уже установлен, и пошагово объясню, как действовать после этого:
- Откройте терминал (или cmd для пользователей win) в основной папке, содержащей файлы, которые вы хотите преобразовать.
e.g.
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
:
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.Готово!
Файл 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' здесь обеспечивает создание файла резервной копии для вашего файла.