Python将模块名视为'NoneType
我有一段代码,表现得有点奇怪。
一开始,我导入了一个模块,这个模块是一个Python和C语言库之间的桥梁。
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()'等等。
这可能是什么原因导致的呢?
附注:这个错误发生在我脚本的最后。如果我在那儿加上一个time.sleep(10),那么错误就会在睡眠之后出现...
谢谢!
1 个回答
2
我不知怎么的解决了这个问题。最开始,在引入PyCCN的代码下面,我还有两个其他的引入:
import xml.etree.ElementTree as ET
import time
所以这些引入在这个文件里是全局的。
当我把这两个引入移动到实际使用它们的函数里面时,问题就解决了!!这个移动是唯一的改变,我不知道为什么这样做就能修复这个问题。
也许是因为pyccn模块里有些问题,导致这些引入之间发生了冲突?(我认为标准库不是造成这个问题的原因)。