RefactoringTool: ParseError: bad input: type=22, value='='
RefactoringTool: ParseError: bad input: type=22, value='='
我正在重构一些 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)
我不知道哪里出了问题。你能帮忙吗?
问题是您尝试转换的代码无效 Python 2 代码。
当运行你的代码使用Python2时,你会得到以下错误:
File "repo.py", line 5
print(' ', file = sys.stderr) # this is a line that yields error
^
SyntaxError: invalid syntax
看来这段代码已经是Python 3 代码了。使用 Python 3 您的代码不会产生 SyntaxError。
我发现绝对导入寻址为我解决了这个问题。语法没问题,但是用下面的相对导入出错了。
失败:
from . import classes.utility as util
作品:
from classes import utility as util
这可能只是我对 Python3 中的导入缺乏理解。
如果您已经将 print
语句转换为函数(就像您所做的那样),您可以在调用 2to3
时使用 -p
参数
-p, --print-function Modify the grammar so that print() is a
function
例如
2to3 -p yourfile.py
我正在重构一些 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)
我不知道哪里出了问题。你能帮忙吗?
问题是您尝试转换的代码无效 Python 2 代码。
当运行你的代码使用Python2时,你会得到以下错误:
File "repo.py", line 5
print(' ', file = sys.stderr) # this is a line that yields error
^
SyntaxError: invalid syntax
看来这段代码已经是Python 3 代码了。使用 Python 3 您的代码不会产生 SyntaxError。
我发现绝对导入寻址为我解决了这个问题。语法没问题,但是用下面的相对导入出错了。
失败:
from . import classes.utility as util
作品:
from classes import utility as util
这可能只是我对 Python3 中的导入缺乏理解。
如果您已经将 print
语句转换为函数(就像您所做的那样),您可以在调用 2to3
-p
参数
-p, --print-function Modify the grammar so that print() is a function
例如
2to3 -p yourfile.py