Python 3: AttributeError: 'module' object has no attribute '__path__' using urllib in terminal

Python 3: AttributeError: 'module' object has no attribute '__path__' using urllib in terminal

我的代码在 PyCharm 中运行完美,但我在尝试在终端中打开它时收到错误消息。我的代码有什么问题,或者我哪里出错了?

import urllib.request
with urllib.request.urlopen('http://python.org/') as response:
   html = response.read()
   print(html)

终端输出:

λ python Desktop\url1.py
Traceback (most recent call last):
  File "<frozen importlib._bootstrap>", line 2218, in _find_and_load_unlocked
AttributeError: 'module' object has no attribute '__path__'

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "Desktop\url1.py", line 1, in <module>
    import urllib.request
  File "C:\Users\Przemek\Desktop\urllib.py", line 1, in <module>
    import urllib.request
ImportError: No module named 'urllib.request'; 'urllib' is not a package

您调用了一个文件C:\Users\Przemek\Desktop\urllib.py,您需要重命名它。您正在从中导入而不是实际的模块。重命名 C:\Users\Przemek\Desktop\urllib.py 并删除任何 C:\Users\Przemek\Desktop\urllib.pyc.

这不是您 运行 的文件,但您在同一目录中有该文件,因此 python 首先检查当前目录,因此出现错误。

您通过将源文件命名为 urllib.py 来隐藏标准库包 urllib。重命名!

事实上这在 Pycharm 中完全有效,这是 PyCharm 开发人员的一项惊人的工程壮举!

你也可以在这里使用绝对导入(from __future__ import absolute_import);但在这种情况下,我认为它不会有帮助,因为您的启动源名称隐藏了您尝试使用的 library/package!

另外,这个:

import urllib.request
with urllib.request.urlopen('http://python.org/') as response:

应该是这样的:

import urllib
with urllib.urlopen('http://python.org/') as response: