导入的模块随机设置为None

时间:2014-10-09 14:37:36

标签: python spyder

我的脚本有一个非常奇怪的问题,它具有以下结构:

import os

# ... some functions

def function_one():

    ...

def function_two():

    if os.path.isdir(...):

最后一句话有时会失败NoneType has no attribute 'path',而且我发现function_two的修改版本

def function_two():
    if os is None:
        print function_one

打印None。因此os不仅Nonefunction_one None也是sys.modules

我想重现错误,但根本不知道在哪里寻找原因,我没有全局变量而且我不修改os

是否有人知道None如何成为os?如果不使用名称为function_one和{{1}}的全局变量,我无法模拟这个......

1 个答案:

答案 0 :(得分:0)

如果PYTHONPATH中有另一个名为os的模块,则可能会导入。正如人们在评论中提到的那样,另一个模块也可以在sys.modules中或通过导入模块来修补os模块。