No module named 'urllib.request'; 'urllib' is not a package

时间:2021-06-10 23:55:43

想学爬虫urllib的设置代理服务器,于是把之前跳过没学的urllib捡起来,敲了段简单的代码,如下

import urllib.request

url = "http://www.baidu.com"
data = urllib.request.urlopen(url).read()
data = data.decode('UTF-8')
print(data)

然而执行后总是报错:

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

尝试过用 from urllib import request,pip install urllib(想想好傻,urllib是python内置的库)

还是同样问题、保存py文件之后运行就提示 ImportError: No module named request。

但在python shell里面运行就正常。

多方查找,发现是个太傻x的错误。

原来是我的文件命名的问题。

系统搜索模块的优先顺序是:程序主目录,然后是系统环境变量定义的路径,然后才是标准库目录。 如果按这个顺序找到了,当然就不再向下找了。因为文件名正好是urllib,本意想导入标准库目录下的urllib,结果把自己的当前文件导入了。

反思:

最开始在*查到了,但看到问题背景是2.7版本的,就没继续往下看,坚定的认为是urllib的应用方法不对,认为不是3.6就没有参考价值。

跟头摔得惨,要长记性,1.任何地方都可能出错误 2.python2.7 和 3.x 代码有不同处,但出错问题原因可能一样。