You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python导入自定义模块时datetime.now()不识别报错如何解决

问题原因

  1. 核心原因是Python的模块缓存机制:你修改自定义模块test_tsp.py的代码后,Jupyter Notebook不会自动重新加载更新后的模块,仍然运行的是首次导入时缓存的旧版本代码。如果旧版本的test_tsp.py中只有import datetime语句,没有后续from datetime import datetime的覆盖操作,那么函数中使用的datetime指向的是标准库datetime模块,而模块本身没有now()方法(now()是datetime模块下datetime类的方法),就会触发该报错。
  2. 次要原因包括:test_tsp.py的其他位置意外修改了datetime变量的指向,或者工作目录下存在和标准库同名的datetime.py文件,替代了标准库的datetime模块被导入。

解决方法

  1. 优先重启Jupyter内核清除缓存:点击Jupyter界面顶部菜单栏的「Kernel」→「Restart」,重启后重新运行代码,绝大多数情况下该问题会直接解决。
  2. 如果重启后仍然报错,调整自定义模块的导入写法,从根源避免命名冲突,推荐两种规范写法二选一:
    • 写法1:仅导入datetime模块,调用时写全路径
      import datetime
      def tsp():
          return datetime.datetime.now().strftime("%x %X") + '\n'
      
    • 写法2:导入datetime类时设置别名,避免和模块名重名
      from datetime import datetime as dt
      def tsp():
          return dt.now().strftime("%x %X") + '\n'
      
  3. 若仍未解决,检查当前工作目录下是否存在名为datetime.py的自定义文件,以及__pycache__缓存目录,删除上述文件和目录后再重启内核运行即可。

内容的提问来源于stack exchange,提问作者DM1

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.30 10:36:03