我使用cx_freeze来冻结我的myScript.py脚本,它在我的英文win7 x64上运行正常,但在cx_freeze之后,在中文win7 x64上,它显示以下错误消息。我在一个干净的安装英语win7 x64上运行相同的冻结代码,没有错误发生。
Traceback (most recent call last):
File "C:\Python27\lib\site-packages\cx_Freeze\initscripts\Console.py", line 27, in <module>
File "myScript.py", line 2, in <module>
File "myScript.pyx", line 62, in init myScript (myScript.c:23212)
File "C:\Python27\lib\site-packages\winappdbg\__init__.py", line 234, in <module>
File "C:\Python27\lib\site-packages\winappdbg\breakpoint.py", line 66, in <module>
File "C:\Python27\lib\site-packages\winappdbg\process.py", line 58, in <module>
File "C:\Python27\lib\site-packages\winappdbg\disasm.py", line 631, in <module>
File "C:\Python27\lib\site-packages\winappdbg\disasm.py", line 651, in Disassembler
TypeError: unsupported operand type(s) for +=: 'NoneType' and 'str'
然后我检查了winappdbg代码中的文件disasm.py,在该行,代码是
# Add the list of supported disassemblers to the docstring.
__doc__ += "\n"
for e in engines:
__doc__ += " - %s - %s (U{%s})\n" % (e.name, e.desc, e.url)
del e
我想如果我改变这行代码,然后重新cx_freeze我的代码,那么错误可能就会发生。
但是__doc__
怎么会在这里没有?它不是包的文档字符串,总是有东西吗?
答案 0 :(得分:0)
正如Thomas K在评论中指出的那样,冻结的Python代码经常被优化并且不包含文档字符串。 WinAppDbg根本就不是为那个用例而设计的,所以你必须在那里修补它(可能还有几个地方)。
如果您确实碰巧制作了该补丁,请告诉我,以便合并它:)