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