Python 3:AttributeError:'module'对象在终端中使用urllib没有属性'__path__'

时间:2015-05-15 14:20:01

标签: python urllib

我的代码在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

3 个答案:

答案 0 :(得分:12)

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

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

答案 1 :(得分:0)

通过命名源文件urllib,您可以隐藏标准库包urllib.py。重命名吧!

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

您也可以在此处使用绝对导入(from __future__ import absolute_import);但在这种情况下,我不认为它会帮助你,因为你的启动源名称会影响你想要使用的库/包!

答案 2 :(得分:-1)

另外,这个:

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

应该是这样的:

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