导入错误:无法导入名称“getLogger”

请叫我*_*小马哥 3 python import

这个问题在这里已经有了答案:\n python & suds \xe2\x80\x9cImportError: Cannot import name getLogger\xe2\x80\x9d

\n\n

但似乎我遇到了一种无法用答案解释的情况。

\n\n

详细信息如下:

\n\n

我有一个名为logging.py 的文件。代码如下:

\n\n
import sys\nprint(sys.path)\nfrom logging import getLogger\n
Run Code Online (Sandbox Code Playgroud)\n\n

我知道如果我运行 python3logging.py ,它将无法工作。因为 python 会尝试搜索 sys.path 中的目录来查找日志记录模块。这样,sys.path[0]将是脚本的目录,以便python直接从脚本的目录加载模块日志记录,而不是搜索python标准lib。

\n\n

这是输出:

\n\n
# chuck @ LAPTOP-RN92LIAI in ~/editable_package/test_py [12:01:43]\n$ python3 logging.py\n[\'/home/chuck/editable_package/test_py\', \'/usr/lib/python36.zip\', \n\'/usr/lib/python3.6\', \'/usr/lib/python3.6/lib-dynload\', \n\'/home/chuck/.local/lib/python3.6/site-packages\', \n\'/usr/local/lib/python3.6/dist-packages\', \'/usr/lib/python3/dist-packages\']\n.....\nImportError: cannot import name \'getLogger\'\n
Run Code Online (Sandbox Code Playgroud)\n\n

所以我尝试将文件作为 python3 -mlogging 运行,我期望 sys.path 没有模块的目录,以便 python 将搜索 sys.path 中标准 lib 的目录。

\n\n

然而,结果表明 sys.path 是预期的,但 python 搜索的模块不是:

\n\n
:!python3 -m logging\n[\'\', \'/usr/lib/python36.zip\', \'/usr/lib/python3.6\', \'/usr/lib/python3.6/lib- \ndynload\', \'/home/chuck/.local/lib/python3.6/site-packages\', \n\'/usr/local/lib/python3.6/dist-packages\', \'/usr/lib/python3/dist-packages\']\n...\nTraceback (most recent call last):\n  File "/usr/lib/python3.6/runpy.py", line 193, in _run_module_as_main\n  "__main__", mod_spec)\n File "/usr/lib/python3.6/runpy.py", line 85, in _run_code\n    exec(code, run_globals)\n File "/home/chuck/editable_package/test_py/logging.py", line 3, in <module>\n    from logging import getLogger\n  File "/home/chuck/editable_package/test_py/logging.py", line 3, in \n  <module>\n   from logging import getLogger\n ImportError: cannot import name \'getLogger\'\n
Run Code Online (Sandbox Code Playgroud)\n\n

我对此感到困惑。只是不知道为什么。任何建议将不胜感激。

\n

Cor*_*zin 5

问题是您将文件命名为“logging.py”,这使得它看起来像Python本机“logging”模块。当您运行该文件时,它会尝试从自身导入 getLogger,但这不起作用,因为它没有在那里定义。重命名你的文件,它就会起作用。