RefactoringTool:ParseError:错误的输入:type = 22,value ='='

时间:2019-08-13 10:16:35

标签: python python-2to3

我正在重构一些python2代码,并使用2to3模块将其更改为python3。我收到以下解析错误:

RefactoringTool: There was 1 error:
RefactoringTool: Can't parse ./helpers/repo.py: ParseError: bad input: type=22, value='=', context=(' ', (45, 25))

以下是产生错误的代码:

    except ImportError as error_msg:  # pragma: no cover                           
        print(' ',  file = sys.stderr) # this is a line that yields error                                          
        print("Could not locate modifyrepo.py", file=sys.stderr)                
        print("That is odd... should be with createrepo", file=sys.stderr)      
        raise ImportError(error_msg)

我不知道有什么问题。你能帮忙吗?

3 个答案:

答案 0 :(得分:2)

问题是您要转换的代码不是有效的Python 2代码。

使用Python 2运行代码时,会出现以下错误:

  File "repo.py", line 5
    print(' ',  file = sys.stderr) # this is a line that yields error
                     ^
SyntaxError: invalid syntax

似乎此代码已经是Python 3代码。使用Python 3,您的代码不会产生SyntaxError。

答案 1 :(得分:0)

我发现绝对导入地址对我来说很合理。语法很好,但是带有以下内容的相对导入给出了错误。

失败:

from . import classes.utility as util

作品:

from classes import utility as util

这可能只是我对Python3中的导入缺乏了解。

答案 2 :(得分:0)

如果您已经将print语句转换为函数(如已完成),则可以在调用-p时使用2to3参数

-p,--print-function修改语法,使print()为 功能

例如

2to3 -p yourfile.py