Python将模块名视为'NoneType

3 投票
1 回答
820 浏览
提问于 2025-04-17 18:04

我有一段代码,表现得有点奇怪。

一开始,我导入了一个模块,这个模块是一个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模块里有些问题,导致这些引入之间发生了冲突?(我认为标准库不是造成这个问题的原因)。

撰写回答