Python Error in atexit._run_exitfuncs when monkey patching datetime.datetim

2024-09-29 18:02:03 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个运行良好的程序,然后我添加了以下代码用于测试:

class datetimeMock(datetime.datetime): 
    def utcnow():
        return datetime.datetime (2013, 12, 17, 12)

if __name__=="__main__":

    #testing:
    datetime.datetime = datetimeMock        

    # start processing ...

现在程序似乎运行得很好,但我在退出时遇到了这个错误:

^{pr2}$

有人能理解这个错误吗?在


Tags: 代码name程序datetimereturnifmaindef
1条回答
网友
1楼 · 发布于 2024-09-29 18:02:03

替换内置类型是自找麻烦的;-)请尝试在程序退出之前将datetime.datetime还原为其原始值。atexit在程序关闭时运行(请参阅文档-它是一个标准的Python模块)。假设IPython正在使用sqlite3程序结束时存储一些历史记录,而您的伪造的datetime.datetime类混淆了它。在

orig_datetime = datetime.datetime  # new
datetime.datetime = datetimeMock   # the same

try:
    # start processing
    ...
finally:
    datetime.datetime = orig_datetime

或者从一个普通的shell运行程序,而不是通过IPython。在

相关问题 更多 >

    热门问题