python - 使用 "import dateutil"和 "dateutil.parser.parse()"时出现 AttributeError 但使用 "from dateutil import parser"时没有问题

标签 python python-2.7 attributeerror python-dateutil

我在玩dateutil module在 Python 2.7.3 中。我只是想使用:

import dateutil
dateutil.parser.parse("01-02-2013")

但我得到了一个错误:

AttributeError: 'module' object has no attribute 'parser'

我检查了 dateutil 有哪些属性:

print dir(dateutil)
# output: ['__author__', '__builtins__', '__doc__', '__file__', '__license__',
#          '__name__', '__package__', '__path__', '__version__']

问题是,当我尝试直接从 dateutil 导入 parser 时,它似乎确实存在:

from dateutil import parser
print parser.parse("01-02-2013")
# output: 2013-01-02 00:00:00

from dateutil import parser之后,parser也神奇的出现在了导入的dateutil本身:

print dir(dateutil)
# output: ['__author__', '__builtins__', '__doc__', '__file__', '__license__',
#          '__name__', '__package__', '__path__', '__version__', 'parser',
#          'relativedelta', 'tz']

请注意,此列表中仍然缺少一些其他属性(如 rrule)。

有人知道怎么回事吗?

最佳答案

您还没有导入 dateutil.parser .您可以看到它,但您必须以某种方式导入它。

>>> import dateutil.parser
>>> dateutil.parser.parse("01-02-2013")
datetime.datetime(2013, 1, 2, 0, 0)

那是因为 parser.pydateutil 中的一个模块包裹。它是文件夹结构中的一个单独文件。

回答你在评论中提出的问题,原因是relativedeltatz在您 from dateutil import parser 之后出现在命名空间中是因为parser自己进口 relativedeltatz .

如果你查看 dateutil/parser.py 的源代码,您可以看到导入。

# -*- coding:iso-8859-1 -*-
"""
Copyright (c) 2003-2007  Gustavo Niemeyer <gustavo@niemeyer.net>

This module offers extensions to the standard Python
datetime module.
"""
... snip ...
from . import relativedelta
from . import tz

关于python - 使用 "import dateutil"和 "dateutil.parser.parse()"时出现 AttributeError 但使用 "from dateutil import parser"时没有问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23385003/

相关文章:

python - 禁止或删除python表格警告

python - 如何在 Keras 中实现具有动态形状的自定义输出层?

python - 如何在pyqt中禁用QTableView的默认上下文菜单?

Python: 'NoneType' 对象没有属性 'get_username'

python - AttributeError : 'module' object has no attribute 'lock'

python - .txt 文件中的 NumPy 数组太大,无法加载到内存中

python - 与 PyTorch 的 torch.no_grad 等效的 LibTorch 是什么?

python - 机器字典理解和现有字典的深度复制哪个更容易?

python - 将 SQLAlchemy 导入我的项目

python - AttributeError: 模块 'dask' 没有属性 'set_options'