使用python2.7.x汉化opentoonz用户手册的报错问题
λ python -m sphinx_intl update -p build/gettext -l zh_CN
Traceback (most recent call last):
File "F:\python2.7.10\lib\runpy.py", line 162, in _run_module_as_main
"__main__", fname, loader, pkg_name)
File "F:\python2.7.10\lib\runpy.py", line 72, in _run_code
exec code in run_globals
File "F:\python2.7.10\lib\site-packages\sphinx_intl\__main__.py", line 5, in <module>
main()
File "F:\python2.7.10\lib\site-packages\click\core.py", line 829, in __call__
return self.main(*args, **kwargs)
File "F:\python2.7.10\lib\site-packages\click\core.py", line 782, in main
rv = self.invoke(ctx)
File "F:\python2.7.10\lib\site-packages\click\core.py", line 1259, in invoke
return _process_result(sub_ctx.command.invoke(sub_ctx))
File "F:\python2.7.10\lib\site-packages\click\core.py", line 1066, in invoke
return ctx.invoke(self.callback, **ctx.params)
File "F:\python2.7.10\lib\site-packages\click\core.py", line 610, in invoke
return callback(*args, **kwargs)
File "F:\python2.7.10\lib\site-packages\sphinx_intl\commands.py", line 263, in update
basic.update(locale_dir, pot_dir, languages, line_width)
File "F:\python2.7.10\lib\site-packages\sphinx_intl\basic.py", line 70, in update
click.echo('Create: {0}'.format(po_file))
File "F:\python2.7.10\lib\site-packages\click\utils.py", line 267, in echo
file = auto_wrap_for_ansi(file)
File "F:\python2.7.10\lib\site-packages\click\_compat.py", line 704, in auto_wrap_for_ansi
ansi_wrapper = colorama.AnsiToWin32(stream, strip=strip)
File "F:\python2.7.10\lib\site-packages\colorama\ansitowin32.py", line 101, in __init__
system_has_native_ansi = not on_windows or enable_vt_processing(fd)
File "F:\python2.7.10\lib\site-packages\colorama\winterm.py", line 183, in enable_vt_processing
handle = get_osfhandle(fd)
IOError: [Errno 9] Bad file descriptor
直接修改 colorama 的源代码(最有效)
找到这个文件:F:\python2.7.10\lib\site-packages\colorama\winterm.py
打开后找到第183行附近(包含 enable_vt_processing 函数的地方),将这个函数修改为:
def enable_vt_processing(fd): return False """ if win32.windll is None or not win32.winapi_test(): return False try: handle = get_osfhandle(fd) mode = win32.GetConsoleMode(handle) win32.SetConsoleMode( handle, mode | win32.ENABLE_VIRTUAL_TERMINAL_PROCESSING, ) mode = win32.GetConsoleMode(handle) if mode & win32.ENABLE_VIRTUAL_TERMINAL_PROCESSING: return True # Can get TypeError in testsuite where 'fd' is a Mock() except (OSError, TypeError): return False """
浙公网安备 33010602011771号