首页 > 解决方案 > AttributeError:模块“日期时间”在导入 yaml 时没有属性“日期”

问题描述

我的代码行之一是

import yaml

它安装在 python 3.7 上,使用pip install pyyaml

出现以下错误

回溯(最近一次通话最后):

文件“C:/code/EPMD/Kodex/Applications/EPMD-Software/Sandbox/peer_sharing_send_rate.py”,第 1 行,从 TestPeer.TestPeerChangingSendRate 导入 TestPeerChangingSendSpeed 文件“C:\code\EPMD\Kodex\Applications\EPMD-Software \TestPeer\TestPeerChangingSendRate.py",

第 1 行,从 .TestPeer 导入 TestPeer 文件“C:\code\EPMD\Kodex\Applications\EPMD-Software\TestPeer\TestPeer.py”,

第 4 行,从 BaseProcess.ZmqPeerClass 导入 ZmqPeer 文件“C:\code\EPMD\Kodex\Applications\EPMD-Software\BaseProcess\ZmqPeerClass.py”,

第 2 行,从 .ZmqPublisherClass 导入 ZmqPublisher 文件“C:\code\EPMD\Kodex\Applications\EPMD-Software\BaseProcess\ZmqPublisherClass.py”,

第 10 行,从 . 导入 ZmqProcessClass 文件 "C:\code\EPMD\Kodex\Applications\EPMD-Software\BaseProcess\ZmqProcessClass.py",

第 5 行,从 .ConfigBaseClass 导入 ConfigBase 文件“C:\code\EPMD\Kodex\Applications\EPMD-Software\BaseProcess\ConfigBaseClass.py”,

第 3 行,导入 yaml 文件 "C:\code\EPMD\Kodex\venv\lib\site-packages\yaml__init__.py",第 9 行,从 .dumper import * 文件 "C:\code\EPMD\Kodex\ venv\lib\site-packages\yaml\dumper.py",第 6 行,从 .representer 导入 * 文件 "C:\code\EPMD\Kodex\venv\lib\site-packages\yaml\representer.py",线

263,在 SafeRepresenter.add_representer(datetime.date, AttributeError: 模块 'datetime' 没有属性 'date'

我怎么import yaml去上班?

标签: pythonpython-3.xpyyaml

解决方案


您可能datetime.py在错误消息中显示的目录之一中调用了一个文件(很可能C:/code/EPMD/Kodex/Applications/EPMD-Software/Sandbox/),如果这样做,则需要将其重命名为不会影响任何其他 Python 模块的名称。

原因是它掩盖了实际的datetime模块,因为当前工作目录中的文件/目录/模块优先于安装在site-packages目录中的模块(内置和安装的模块所在的目录)。如果两个位置都包含一个a模块,那么import a将导入本地a模块而不是(可能)asite-packages.

它什么yaml\representer.py时候import datetime导入了datetime.py没有date属性的文件/模块,这就是为什么AttributeError在后来尝试使用datetime.date.


推荐阅读