奇怪的Python datetime导入问题

4 投票
3 回答
8338 浏览
提问于 2025-04-16 16:54

你好,

我发现这个问题在不同的环境下表现得不太一样。比如,有些代码在一个环境下能正常工作,而在另一个环境下就出错,而且这种情况时常变化(也就是说,有的代码在一个环境下出错,而在另一个环境下又能正常运行)。

from datetime import datetime
datetime.datetime.utcnow()


import datetime
datetime.datetime.utcnow()

举个例子,我刚把Python从2.6升级到2.7,结果之前能正常工作的第一段代码现在出错了。

追踪记录(最近的调用最后): 文件 "<stdin>",第 1 行,在 <module> 中 属性错误:类型对象 'datetime.datetime' 没有属性 'datetime'

这没问题,但同样的代码在2.6中是可以正常工作的,而第二段代码却出错了。现在情况正好相反……

这真是个奇怪的问题……

谢谢,

哈雷尔

3 个回答

0

你搞错了。第一段代码在两个版本中都是不正确的。

4

如果你在使用 from datetime import datetime 这行代码,那么你应该用 datetime.utcnow(),而不是 datetime.datetime.utcnow()。我实在想不出你第一段代码怎么可能会正常工作。

>>> from datetime import datetime
>>> datetime.datetime.utcnow()
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
AttributeError: type object 'datetime.datetime' has no attribute 'datetime'
>>> datetime.utcnow()
datetime.datetime(2011, 5, 3, 14, 10, 36, 30592)
4

这里其他的回答都是对的(你的导入方式不对),不过我给你一个代码片段,这样可以更清楚地说明你这样做时发生了什么。

>>> import datetime
>>> type(datetime)
<class 'module'>
>>> type(datetime.datetime)
<class 'type'>
>>> from datetime import datetime
>>> type(datetime)
<class 'type'>

撰写回答