首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >AttributeError:模块“”datetime“”没有属性“”now“”

AttributeError:模块“”datetime“”没有属性“”now“”
EN

Stack Overflow用户
提问于 2018-06-01 16:43:17
回答 10查看 85.6K关注 0票数 32

我正在自学Python。现在我遇到了一些问题。下面是我的代码,从运行良好的视频中复制出来。

代码语言:javascript
运行
复制
import datetime

print(type(datetime))
d1 = datetime.datetime.now()
print(d1)

当我使用Pycharm & sublime运行代码时,我得到了错误。以下是sublime的错误信息

代码语言:javascript
运行
复制
<class 'module'>
Traceback (most recent call last):

  File "D:\programming\python\datetime.py", line 1, in <module>
    import datetime

  File "D:\programming\python\datetime.py", line 4, in <module>
    d1 = datetime.datetime.now()

AttributeError: module 'datetime' has no attribute 'now'

以下是pycharm的错误信息

代码语言:javascript
运行
复制
D:\programming\python\venv\Scripts\python.exe C:\Program Files\JetBrains\PyCharm 2018.1.2\helpers\pydev\pydevconsole.py" 63029 63030
<class 'module'>
Traceback (most recent call last):

  File "C:\Program Files\JetBrains\PyCharm 2018.1.2\helpers\pydev\pydevconsole.py", line 4, in <module>
    from _pydev_imps._pydev_saved_modules import thread

  File "C:\Program Files\JetBrains\PyCharm 2018.1.2\helpers\pydev\_pydev_imps\_pydev_saved_modules.py", line 21, in <module>
    import xmlrpc.client as xmlrpclib

  File "D:\programming\Anoconda3\lib\xmlrpc\client.py", line 134, in <module>
    from datetime import datetime

  File "D:\programming\python\datetime.py", line 4, in <module>
    d1 = datetime.datetime.now()

AttributeError: module 'datetime' has no attribute 'now'
Process finished with exit code 1

这段代码在IDLE和cmd下运行良好。当我只编写print(type(datetime))代码时,它运行得很好,但是打印双倍类型的datetime。

我不知道该怎么做,请给我一些建议。谢谢。

EN

回答 10

Stack Overflow用户

发布于 2018-06-03 23:41:18

编辑**

用户自己的自定义datetime.py模块正在覆盖标准库,下面的信息对于理解为什么会发生这种情况仍然很有用。导入算法首先检查您的即时目录。您可以使用以下命令检查模块文件路径:

代码语言:javascript
运行
复制
print a_module.__file__

欢迎来到疯狂的编程世界。所以,我不确定我是否完全理解你的问题,所以我会试着把一些事情分解一下,留出空间给你讨论。

当您导入datetime时,您导入了称为模块的东西。模块通常被称为名称空间,它们用于在层次结构下创建属性分离,这样您就不会意外地在导入时覆盖其他代码。你可以阅读更多关于它的文章here

datetime模块

提供了以简单和复杂的方式操作日期和时间的类。虽然支持日期和时间算法,但实现的重点是有效的属性提取,以进行输出格式化和操作。有关相关功能,请参阅时间和日历模块。

当您导入它并对其运行type方法时,您应该会看到以下结果:

代码语言:javascript
运行
复制
>>> import datetime
>>> type(datetime)
<class 'module'>

内置类型方法文档说明如下:

4.12.6。类型对象类型对象表示各种对象类型。对象的类型由内置函数type()访问。类型上没有特殊的操作。标准模块类型定义了所有标准内置类型的名称。

当您显式打印该输出时,结果将是相同的:

代码语言:javascript
运行
复制
>>> print(type(datetime))
<class 'module'>

模块在导入时公开属性。您要访问的属性是datetime模块datetime属性,它是一个恰好具有相同名称的。因此,当您访问它时,它看起来像datetime.datetime

该类支持名为"now“的方法(它也是类的属性,而不是模块)。因此,当您访问该方法时,它看起来像是调用它的datetime.datetime.now()。

如果你想在导入时简化这个层次结构,你可以说明你只想把datetime类从datetime模块中去掉:

代码语言:javascript
运行
复制
from datetime import datetime
#and the access its now method simpler
d1 = datetime.now()

这可能有助于解决属性访问问题,这可能是一个混乱的问题。如果您想更多地澄清您的问题,请随时这样做!

我希望这能帮到你。

票数 40
EN

Stack Overflow用户

发布于 2020-06-18 17:05:57

检查您没有使用通配符导入

代码语言:javascript
运行
复制
from datetime import datetime, timedelta
from some_lib import *

some_lib可能有另一个datetime导入,它会重新定义您的

代码语言:javascript
运行
复制
# in some_lib:
import datetime
票数 13
EN

Stack Overflow用户

发布于 2020-01-22 00:30:16

只需导入_datetime而不是datetime

示例代码:

代码语言:javascript
运行
复制
import _datetime

today = _datetime.date.today()

print(today)
票数 12
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50639415

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档