【发布时间】:2017-01-07 16:19:59
【问题描述】:
在下面一行
def run_job_subtype(self):
print os
if os.path.exists(self.abs_export_dir):
return "incr"
else:
return "full"
我得到如下回溯:
"AttributeError: 'NoneType' object has no attribute 'path'
打印操作系统:
<module 'os' from '/usr/lib/python2.7/os.pyc'>
<module 'os' from '/usr/lib/python2.7/os.pyc'>
<module 'os' from '/usr/lib/python2.7/os.pyc'>
None
None
None
None
None
None
None
突然间它被设置为无
我不认为我以编程方式设置为 None..
除了程序员之外,是否有可能将 os 设置为 None?
或者除了手动查看数千行代码之外的任何调试方法?
这个函数在线程中调用
还有一件奇怪的事……我把代码改成了:
def run_job_subtype(self):
print os
print sys.modules['os']
if os.path.exists(self.abs_export_dir):
return "incr"
else:
return "full"
追溯
print sys.modules[\'os\']
', "AttributeError: 'NoneType' object has no attribute 'modules'
而且我也在导入 sys.我绝对不会为 os 和 sys 创建变量...
有什么东西正在擦除所有的导入?
【问题讨论】:
-
您的代码中有一些变量
os设置为等于None -
某处,不知何故,您已将
None分配给名为os的变量,从而隐藏了模块名称。 -
尝试生成一个足够完整的示例,以便有人可以从问题中复制并粘贴它并自己查看问题。在stackoverflow.com/help/mcve 和sscce.org 讨论了这样做的方法(以及动机,除了“未能向 MCVE 提供以代码为中心的问题使其有资格被关闭”)。
-
@CharlesDuffy 我不问出了什么问题。我问什么可能是错的。我已经展示了这个问题,并且无需提供可重现的代码,ppl 的编码经验可以让人们事后了解可能是什么导致此类错误
-
@ealeon, ...并且网站规则使这种形式的问题(“请转储一堆猜测”)可以关闭。你应该做你的功课——在这种情况下,“你的功课”意味着构建一个复制器。
标签: python python-2.7