cx_freeze后+ =:'NoneType'和'str'winappdbg错误的不支持的操作数类型

时间:2014-03-10 12:01:20

标签: python pywin32 cx-freeze docstring

我使用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__怎么会在这里没有?它不是包的文档字符串,总是有东西吗?

enter image description here

1 个答案:

答案 0 :(得分:0)

正如Thomas K在评论中指出的那样,冻结的Python代码经常被优化并且不包含文档字符串。 WinAppDbg根本就不是为那个用例而设计的,所以你必须在那里修补它(可能还有几个地方)。

如果您确实碰巧制作了该补丁,请告诉我,以便合并它:)