Python:又一个 AttributeError 错误:'module' 对象没有属性

4
我尝试阅读其他问题,但仍无法使其工作。基本上,我正在使用一个名为time_string()的快速而简单的函数,以字符串格式返回日期和时间。如果我直接运行time_string,它可以正常工作。但如果我从另一个函数调用它,就会出现AttributeError错误。要解决这个问题,您需要检查调用time_string()函数的方式是否正确,并确保在调用时传递正确的参数。同时,您还应该检查函数内部是否存在任何变量或对象名称错误的问题。如果仍然无法解决问题,请提供更多详细信息,以便我们更好地理解问题并提供帮助。 time_string
import time
def time_string(): #Never mind the unreadable formatting
    return str(time.localtime().tm_hour)+':'+str(time.localtime().tm_min)+':'+str(time.localtime().tm_sec)+\
           ' '+str(time.localtime().tm_year)+'/'+str(time.localtime().tm_mon)+'/'+str(time.localtime().tm_mday)

if __name__ == '__main__':
    print time_string()

直接运行time_string

2012年7月19日 13:46:13

其他函数

from misc.time_string import time_string
def main():
    print time_string()

if __name__ == '__main__':
    main()

运行其他函数

追溯调用栈(最近的一次调用在最后一行): 在文件“#文件路径#”中, 第10行,调用main()函数; 在文件“#文件路径#”中, 第7行,调用print time_string()函数; 在文件“#文件路径#”中, 第9行,调用time_string()函数,但出现了AttributeError异常, 错误提示为'module'模块没有'localtime'属性。

我猜测这可能是时间模块没有被导入或者其他某些原因导致的错误,但我无法理解它的原因。

感谢您的帮助!


2
你是否把你的模块命名为“time.py”?因为我认为它正在掩盖标准库中的时间模块。 - mouad
1
我已经尝试过将模块和函数名称重命名为各种不同的名称,包括不使用相同的名称,但都没有成功。 - Scart
5
为什么不使用strftime函数?该函数详细介绍请参考Python官方文档中的datetime模块。 - Lev Levitsky
我复制并粘贴了这两个脚本,在一个封闭的环境中它们可以正常工作。我所做的唯一更改是将"from misc.time_string..."更改为"from misc import time_string"。 - mfsiega
2
在你的 time_string.py 文件中,在 import time 之后加入这一行代码:print repr(test),并告诉我们你看到了什么。如果你真的导入了标准库 time,你应该会得到:<module 'time' (built-in)>,否则你会得到类似于:<module 'time' from '<some_path>'> 的结果。 - mouad
显示剩余4条评论
1个回答

16

问题在于您在运行脚本的目录中有或曾经有一个名为time.py的文件,导致错误地导入了错误的time模块。

即使您删除了time.py文件,仍然会导入已编译的time.pyc文件。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接