Python将模块名称视为';非类型';

Python将模块名称视为';非类型';,python,object,module,Python,Object,Module,我有一段行为奇怪的代码 开始时,我导入了一个模块,它是C库的python绑定 try: import pyccn except: print "ERROR: PyCCN is not found" exit(1) 后来在我的代码中,我使用pyccn模块做了很多事情,它按照预期(几乎)工作。现在,在正确工作了相当长一段时间后,它给了我一个错误: Traceback (most recent call last): File "./ndn-ls-keys.py",

我有一段行为奇怪的代码

开始时,我导入了一个模块,它是C库的python绑定

try:
    import pyccn
except:
    print "ERROR: PyCCN is not found"
    exit(1)
后来在我的代码中,我使用pyccn模块做了很多事情,它按照预期(几乎)工作。现在,在正确工作了相当长一段时间后,它给了我一个错误:

 Traceback (most recent call last):
   File "./ndn-ls-keys.py", line 185, in upcall
     if kind == pyccn.UPCALL_CONTENT_UNVERIFIED:
 AttributeError: 'NoneType' object has no attribute 'UPCALL_CONTENT_UNVERIFIED'
所以它说“pyccn”是非类型的!! 但是它工作正常,我的意思是,在错误发生之前,包含第185行的同一个函数被多次调用。错误总是不断地发生。我没有重新定义“pyccn”,只是使用了“pyccn.foo()、pyccn.bar()等”

发生这种情况的可能原因是什么

另外,错误发生在我的脚本末尾。如果我把时间放在那里睡觉,那么它发生在睡觉之后


谢谢

我不知怎么解决了这个问题。 最初,在PyCCN导入的正下方,我有两个其他导入:

    import xml.etree.ElementTree as ET
    import time
因此,导入对该文件是全局的

一旦我将这两个导入移动到实际使用的函数中,问题就消失了!!这是唯一的改变,我不知道这一修正背后的原因


可能由于pyccn模块中的某些问题,导入之间存在一些冲突?(我假设标准库不对这个问题负责)。

如果不看代码的其余部分,可能无法回答这个问题-你能提供一个可复制的示例吗?@DavidRobinson我想。。。但它需要相当多的PyCCN方面的依赖性。。对于模块被视为“非类型”对象的可能原因,您是否有任何猜测?我认为您必须将
None
分配给代码中的
pyccn
名称。如果从未导入
pyccn
模块,则使用未知名称时会出现
namererror
,而不是
AttributeError
pyccn
使用线程。这是一个很长的过程,但在调用析构函数时,可能在关闭时线程之间存在奇怪的交互?请尝试使用
PYTHONVERBOSE=2
运行脚本以监视关闭清理,当通过将属性和模块设置为
None
来清除它们时。您有自己的名为
time
的模块吗?@nneonneo据我所知,没有。我在关机时出现了非类型错误,没有文件名和行号。我最终通过将导入ag34401a_类从全局移动到本地来修复它。也许它试图两次释放相同的全局对象?