PyCharm运行datetime代码报无datetime属性错误如何解决
报错原因
你贴出的代码本身语法逻辑没有问题,正常情况下可以正确输出当前时间,报错和代码写法无关,触发原因只有两类:
- 90%以上的场景是当前PyCharm项目的工作目录下存在自定义命名为
datetime.py的文件。Python导入模块时会优先检索运行路径下的文件,你的自定义文件直接覆盖了Python标准库自带的datetime模块,而自定义文件中没有定义datetime类,调用时就会抛出属性不存在的错误。 - 剩余少数场景是PyCharm解释器配置错位、模块缓存未刷新,导致标准库的导入路径识别异常。
修复步骤
- 清理重名文件
- 打开当前项目的根目录,查找所有命名为
datetime.py的自有代码文件,将其重命名为不与标准库冲突的名称,例如my_datetime_test.py。 - 同步删除项目目录下
__pycache__文件夹中所有和datetime相关的.pyc缓存文件,避免旧缓存干扰导入逻辑。
注意:日常写代码时不要将自有文件命名为Python标准库同名模块,例如
time.py、json.py、os.py,如果安装了对应第三方库也不要命名为requests.py、pandas.py这类名称,都会触发同类模块覆盖问题。
- 验证导入来源
重命名完成后,可以在代码开头加一行打印语句,确认当前导入的是官方标准库的datetime模块:
import datetime # 打印模块实际加载路径 print(datetime.__file__)
正常情况下输出路径应当指向你本地Python安装目录下的Lib/datetime.py,如果输出路径仍然在你的项目目录下,说明重名文件没有清理完全或者缓存未删除。
- 修复IDE异常(上述步骤无效时操作)
如果清理文件后仍然报错,点击PyCharm顶部菜单栏的File - Invalidate Caches...,勾选清除文件系统缓存选项后重启IDE,重新在设置中绑定项目使用的Python解释器即可。
补充:如果觉得datetime.datetime的写法冗余,也可以调整导入写法,运行效果完全一致:
# 直接从datetime模块导入datetime类 from datetime import datetime current_datetime_demo = datetime.today() print(current_datetime_demo)
内容的提问来源于stack exchange,提问作者bentech
相关产品推荐
相关产品推荐

