1. 问题的提出
在执行python代码的过程中,本来执行正常的代码,在另外一台机器上,却报出了如下错误:
Traceback (most recent call last):
File "<ipython-input-1-d9b40fca9cb0>", line 1, in <module>
from urllib import urlopen; #载入urllib.request,用于获取页面html源代码
在Python代码中使用了如下语句了,导入urlopen方法:
from urlib import urlopen
上述代码在另外一台机器上执行很好的, 为什么在此台机器上却报出错误信息呢?
2. 问题分析与解决
突然灵光一闪,会不时是由于python的版本不同造成的,经过检查一看,果然如此,两者的python版本不一致。
上述代码在Python 2.x下可以正确执行的,在Python 3.x下是会报出上述错误的。
在了解问题的根源之后,我们就可以知道问题的解决办法了。经过分析发现,在从Python 2向Python 3迁移的过程中, urllib的包重新进行了设计和调整,故两者在不同的Python下是不兼容的。
在Python 3下正确的用法是:
from urllib.request import urlopen
3. Python 2 vs Python 3
由于Python 2和Python 3版本之间的不兼容性,导致了非常多的类似问题,故在处理Python代码之时,需要注意必须运行在特定的Python版本上。