【问题标题】:What is causing this Python exception?是什么导致了这个 Python 异常?
【发布时间】:2009-10-25 03:24:01
【问题描述】:
我有一个使用 Python 加载一些脚本的 C++ 应用程序。它调用脚本中的一些函数,一切正常,直到应用程序退出并调用 Py_Finalize。然后它显示以下内容:(GetName 是其中一个脚本中的函数)
Exception AttributeError: "'module' object has no attribute 'GetName'" in 'garbage collection' 被忽略
致命的 Python 错误:垃圾收集期间出现意外异常
然后应用程序崩溃。
我在 Windows 上使用 Python 3.1。任何建议将不胜感激。
【问题讨论】:
标签:
python
exception
attributes
【解决方案1】:
从文档到 Py_Finalize():
错误和警告:破坏
模块和模块中的对象已完成
随机顺序;这可能会导致
析构函数(__del__() 方法)
当它们依赖于其他对象时失败
(甚至函数)或模块。
动态加载的扩展模块
由 Python 加载的不会被卸载。
分配的少量内存
Python 解释器可能不是
释放(如果您发现泄漏,请
举报)。记忆被循环捆绑
对象之间的引用不是
释放。分配的一些内存
扩展模块可能不会被释放。
某些扩展可能无法正常工作
如果他们的初始化程序是
多次调用;这可能发生
如果应用程序调用
Py_Initialize() 和 Py_Finalize() 更多
不止一次。
__del__ 很可能包含对 <somemodule>.GetName() 的调用,但在调用 __del__ 时该模块已被销毁。