我想做一件简单的事:猴子补丁datetime
。我不能完全这样做,因为datetime
是一个C类。
所以我写了下面的代码:
from datetime import datetime as _datetime
class datetime(_datetime):
def withTimeAtMidnight(self):
return self.replace(hour=0, minute=0, second=0, microsecond=0)
这是在名为pimp的包中的名为datetime.py的文件中。
从我给出的错误消息:
Traceback (most recent call last): File "run.py", line 1, in from pimp.datetime import datetime File "/home/lg/src/project/library/pimp/datetime/datetime.py", line 1, in from datetime import datetime as _datetime ImportError: cannot import name datetime
我假设我没有一个名为datetime
的模块从另一个名为datetime
的模块中导入任何内容。
我应该如何继续保持名为datetime
的模块和类?
答案 0 :(得分:2)
将模块放入包中,例如your_lib.datetime
。您不应将datetime
名称用于顶级模块。
如果您使用的是Python 2,请在顶部添加:
from __future__ import absolute_import
禁止在包内隐式相对导入。然后,如果您的目录结构是:
your_lib/
├── datetime.py
└── __init__.py
以下命令有效:
$ python -c 'import your_lib.datetime'
其中datetime.py
是:
from __future__ import absolute_import
from datetime import timedelta