Python 2.5.4抛出';非类型不可调用';而2.5.1工作正常
我知道这个问题可能太模糊了,但以防万一有人看到了这一点,或者有任何线索。我有一个在Python2.5.1下运行良好的应用程序。但是当在Python2.5.4上运行它时,它开始给出“NoneType是不可调用的” 我已经检查了两个版本之间的变更日志,但是有相当多的变更,很难说有什么可能相关 你能给我一些提示,从哪里开始进一步挖掘吗 编辑:很明显有些东西是无的,但问题是为什么在2.5.1下它不是无的。我希望这方面有一个众所周知的问题,以便这个问题能够解决Python 2.5.4抛出';非类型不可调用';而2.5.1工作正常,python,Python,我知道这个问题可能太模糊了,但以防万一有人看到了这一点,或者有任何线索。我有一个在Python2.5.1下运行良好的应用程序。但是当在Python2.5.4上运行它时,它开始给出“NoneType是不可调用的” 我已经检查了两个版本之间的变更日志,但是有相当多的变更,很难说有什么可能相关 你能给我一些提示,从哪里开始进一步挖掘吗 编辑:很明显有些东西是无的,但问题是为什么在2.5.1下它不是无的。我希望这方面有一个众所周知的问题,以便这个问题能够解决 编辑2:很明显,在尝试导入win32com.
编辑2:很明显,在尝试导入win32com.client时发生了错误。有没有关于如何解决这个问题的线索?开始挖掘的地方是你的应用程序。当您认为某个变量应该指向某个对象时,错误消息会告诉您该变量为
None
。因此,找到该变量(错误消息应该告诉您它在哪里),然后找出为什么该变量包含None
您的代码很有可能正在悄悄地捕获错误,或者正在做出一些错误的假设。找到那个错误或假设,然后从那里向后工作。我是代表一个“匿名用户”(可能是未正确登录的OP?!)发布这个答案的,他将此作为问题的编辑(编辑被拒绝,因为它应该作为答案发布——这就是我现在正在做的) 编辑3(并回答):完成。事实证明,win32com.client不能在同一进程中多次导入。即使是第一次导入,也需要重新生成COM缓存并确保它不是只读的。我们通过根本不使用win32com解决了这个问题,因为它似乎只适用于MSXML。XML处理是使用python的标准库XML.sax重写的
错误消息应该告诉您从何处开始查找。有些东西返回了
None
。感谢您迄今为止给出的所有答案,很明显有些东西没有。我很想知道为什么这个错误不能在2.5.1中可靠地暴露出来。它不是一个普通的应用程序,它是C++测试的一部分,它编写一个Python脚本,然后运行它。因此,调试有点棘手。我建议在不同的目录层次结构下构建CPython 2.5.{0,1,2,3,4},并查看哪个版本从工作转换为不工作。