【问题标题】:Python. from dateutil.relativedelta import * works in shell but not in a script [duplicate]Python。 from dateutil.relativedelta import * 在 shell 中有效,但在脚本中无效 [重复]
【发布时间】:2017-09-12 13:01:28
【问题描述】:

当我去跑步时

from datetime import *; from dateutil.relativedelta import *

从 python 脚本中我收到一个错误,在我看来这表明模块本身存在问题。

Traceback (most recent call last):
  File "C:\Users\Tom\Documents\datetime.py", line 1, in <module>
    from datetime import *
  File "C:\Users\Tom\Documents\datetime.py", line 2, in <module>
    from dateutil.relativedelta import *
  File "C:\Users\Tom\AppData\Local\Programs\Python\Python35\lib\site-packages\python_dateutil-2.0-py3.5.egg\dateutil\relativedelta.py", line 11, in <module>
    import calendar
  File "C:\Users\Tom\AppData\Local\Programs\Python\Python35\lib\calendar.py", line 47, in <module>
    class _localized_month:
  File "C:\Users\Tom\AppData\Local\Programs\Python\Python35\lib\calendar.py", line 49, in _localized_month
    _months = [datetime.date(2001, i+1, 1).strftime for i in range(12)]
  File "C:\Users\Tom\AppData\Local\Programs\Python\Python35\lib\calendar.py", line 49, in <listcomp>
    _months = [datetime.date(2001, i+1, 1).strftime for i in range(12)]
AttributeError: module 'datetime' has no attribute 'date'

但是,当我在 python shell 中使用完全相同的语句时,不会发生这种情况,如果在 shell 中使用它可以完美运行。

我确实发现它与 dateutil 的 relativedelta 部分直接相关,因为

from dateutil import *

工作正常。

我尝试过重新安装 dateutil,但仅此而已。

如果重要的话,使用 dateutil 2.0 运行 python 3.5.1。

编辑:对不起,我是个白痴,我的文件名为 datetime.py,这是导致问题的原因。

【问题讨论】:

  • 您的工作目录中有一个名为datetime.py 的文件是问题所在。重命名它,不要掩盖 Python 库。

标签: python python-3.x shell python-dateutil


【解决方案1】:

我相信它是源文件名。我猜当 python 解释器尝试查找 datetime 模块时,它会首先搜索本地目录,并且 datetime 模块将是您的源文件,而不是 datetime 全局包。 this post explains more

一旦您将文件重命名为 dd.py 而不是“C:\Users\Tom\Documents\datetime.py”,它应该可以解决。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-04-02
    • 2019-08-22
    • 1970-01-01
    • 2018-08-27
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多