记录模块不能与Python3一起使用

Jon*_*han 11 python logging python-3.x

我遇到了标准日志记录模块的问题.如果我打开一个python2.7 shell并导入日志记录一切正常:

$ python
>>> import logging
>>>
Run Code Online (Sandbox Code Playgroud)

但是,如果我打开python3.4 shell并导入日志记录,我会收到以下错误:

$ 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
Run Code Online (Sandbox Code Playgroud)

我不知道问题是什么,似乎找不到任何有同样问题的人.

小智 18

默认情况下,日志模块存在于Python 3环境中.不需要导入它.


Dan*_*man 15

您似乎已经安装了logging在Python 3环境中调用的第三方库,该库隐藏了标准库版本,并且其中一个文件存在拼写错误.

  • 它不是一个错字,而是它的Python 2语法.但是,是的,这不是内置日志记录模块的(位置). (3认同)
  • 谢谢你们俩!我从 `/Library/Frameworks/Python.framework/Versions/3.4/lib/python3.4/site-packages/` 中删除了 `logging-0.4.9.6-py3.4.egg` ,现在日志记录在 python2 和蟒蛇3。 (2认同)

Jon*_*ley 5

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

import logging

logging.debug("Debug message")
Run Code Online (Sandbox Code Playgroud)

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

  • 当我读到这篇文章时,我感觉自己像个小丑,并意识到这也是我的问题。感谢你的分享! (3认同)