Python3下日志模块无法工作

24

我在使用标准日志记录模块时遇到了问题。如果我打开一个Python2.7 shell并导入logging,一切正常:

$ python
>>> import logging
>>>

但如果我打开Python3.4 shell并导入logging,我会收到以下错误:

$ python3.4
>>> import logging
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "<frozen importlib._bootstrap>", line 2237, in _find_and_load
File "<frozen importlib._bootstrap>", line 2222, in _find_and_load_unlocked
File "<frozen importlib._bootstrap>", line 2164, in _find_spec
File "<frozen importlib._bootstrap>", line 1940, in find_spec
File "<frozen importlib._bootstrap>", line 1916, in _get_spec
File "<frozen importlib._bootstrap>", line 1897, in _legacy_get_spec
File "<frozen importlib._bootstrap>", line 863, in spec_from_loader
File "<frozen importlib._bootstrap>", line 904, in spec_from_file_location
File "/Library/Frameworks/Python.framework/Versions/3.4/lib/python3.4/site-packages/logging-0.4.9.6-py3.4.egg/logging/__init__.py", line 618
raise NotImplementedError, 'emit must be implemented '\
                         ^
SyntaxError: invalid syntax

我不知道问题出在哪里,也找不到其他遇到过同样问题的人。

4个回答

42

Python 3环境中默认存在日志模块,无需导入。


1
为什么这个回答被踩了?它绝对是正确的答案。 - Dmitri DB
我试图在我的gfunc xD的要求文件中添加logging==0.4.9.6,但它甚至没有在日志中显示错误。 - Suraj

25

您似乎在Python 3环境中安装了一个叫做logging的第三方库,它遮盖了标准库的版本,并且其中一个文件有一个拼写错误。


3
这并不是一个错别字,而是Python 2的语法。但是没错,这不是内置日志模块的(位置)。 - user707650
2
谢谢你们两个!我从/Library/Frameworks/Python.framework/Versions/3.4/lib/python3.4/site-packages/中删除了logging-0.4.9.6-py3.4.egg,现在日志记录在python2和python3中都可以工作了。 - Jonathan

7

我很愚蠢地创建了一个名为logging.py的文件来试用一些日志功能。然后当尝试下面的代码时,它实际上在引用自己并且找不到 debug 方法。

import logging

logging.debug("Debug message")

将我的文件名更改为logtest.py解决了问题。


3
当我阅读这篇文章并认识到这也是我的问题时,我感觉像个小丑。谢谢你的分享! - ImTryingMyBest

0

对我来说,这是在旧版本的Python下安装了一个日志库。

pip3 uninstall logging

对我来说已经解决了。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接