[Tutor] trouble using 2to3.py

Richard D. Moores rdmoores at gmail.com
Tue Nov 3 15:53:06 CET 2009


After much fiddling around, I got 2to3 to work! And it did a fine, if
not perfect job on mycalc.py (which has about 120 functions and 1993
lines).

What I did that worked, was to use the E:\Python26\Tools\Scripts, and
not Python31. E:\Python26\Tools\Scripts has 2to3.py. I added the
folder lib2to3\ and mycalc.py to E:\Python26\Tools\Scripts, and did a

E:\Python26\Tools\Scripts>2to3 -w mycalc.py

The -w switch first backed up mycalc.py as mycalc.py.bak, and then
2to3.py went to work. The only problems it couldn't handle are shown
below. They are all of the same sort, involving a unicode error. I
simply remmed out the problem causing functions, and now it seems
mycalc.py is good to go with Python 3.1.  I'll look into the "unicode"
errors later -- much later.

>>> from mycalc import *
Traceback (most recent call last):
  File "<pyshell#0>", line 1, in <module>
    from mycalc import *
  File "E:\Python31\lib\site-packages\mycalc.py", line 172
    """
SyntaxError: (unicode error) 'unicodeescape' codec can't decode bytes
in position 33-34: malformed \N character escape
>>> from mycalc import *
Traceback (most recent call last):
  File "<pyshell#1>", line 1, in <module>
    from mycalc import *
  File "E:\Python31\lib\site-packages\mycalc.py", line 186
    """
SyntaxError: (unicode error) 'unicodeescape' codec can't decode bytes
in position 198-199: malformed \N character escape
>>> from mycalc import *
Traceback (most recent call last):
  File "<pyshell#2>", line 1, in <module>
    from mycalc import *
  File "E:\Python31\lib\site-packages\mycalc.py", line 207
    file = open('E:\PythonWork\Nutshell\\words.txt', 'r')
SyntaxError: (unicode error) 'unicodeescape' codec can't decode bytes
in position 13-14: malformed \N character escape
>>> from mycalc import *
>>>

I also ran 2to3 again and this time captured the output as what
appears to be a diff file:

==================================
E:\Python26\Tools\Scripts>2to3 -w mycalc.py > 2to3_at_work.txt
RefactoringTool: Skipping implicit fixer: buffer
RefactoringTool: Skipping implicit fixer: idioms
RefactoringTool: Skipping implicit fixer: set_literal
RefactoringTool: Skipping implicit fixer: ws_comma
RefactoringTool: Files that were modified:
RefactoringTool: mycalc.py

E:\Python26\Tools\Scripts>
==================================

You can see the file produced at <http://www.rcblue.com/Misc/2to3_at_work.txt>

Dick


More information about the Tutor mailing list