蟒蛇。来自dateutil.relativedelta import *在shell中工作,但不在脚本中工作

时间:2017-09-12 13:01:29

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

当我去跑步时

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。

编辑:抱歉我是个IDIOT,我的文件名为datetime.py,这是导致问题的原因。

1 个答案:

答案 0 :(得分:2)

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

一旦您将文件重命名为dd.py而不是&#34; C:\ Users \ Tom \ Documents \ datetime.py&#34;它应该成功。