Python将模块名称视为“NoneType”

时间:2013-03-06 01:27:17

标签: 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", line 185, in upcall
     if kind == pyccn.UPCALL_CONTENT_UNVERIFIED:
 AttributeError: 'NoneType' object has no attribute 'UPCALL_CONTENT_UNVERIFIED'

所以它说'pyccn'是NoneType !! 但它工作正常,我的意思是包含第185行的相同功能在错误发生之前被多次调用。并且错误一直发生。我没有重新定义'pyccn',只是使用'pyccn.foo(),pyccn.bar()等'。

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

P.S。错误发生在我的脚本末尾。如果我把time.sleep(10)放在那里,那么它会在睡觉后发生......

谢谢!

1 个答案:

答案 0 :(得分:2)

我以某种方式解决了这个问题。 最初,紧接着PyCCN的导入,我有两个其他导入:

    import xml.etree.ElementTree as ET
    import time

因此,导入对此文件是全局的。

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

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