How to use 2to3 properly for python? How to use 2to3 properly for python? python python

How to use 2to3 properly for python?


Install the following module which adds the 2to3 command directly to entry_points.

pip install 2to3

As it is written on 2to3 docs, to translate an entire project from one directory tree to another, use:

2to3 --output-dir=python3-version/mycode -W -n python2-version/mycode


If you don't have 2to3 on your path, you can directly invoke lib2to3:

python -m lib2to3 directory\file.py

And as the docs (and other answers) mention, you can use some flags for more customization:

  • the -w flag to enable writeback, which applies the changes to the file
  • the -n to disable backups

(there are a few more flags; see the docs for more information.)


It's important to have a backup before running 2to3.

  1. If you're using git, make a commit.
  2. Otherwise, make a backup copy of your files.

First, run 2to3 in "soft mode" to see what it would actually do:

$ 2to3 /path/to/your/project

If you're happy with what it would do, you can then run 2to3 "for real":

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

And now you have properly run 2to3 :)