由于旧的ipv6配置,Python始终返回网络无法访问
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了由于旧的ipv6配置,Python始终返回网络无法访问,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含3983字,纯文字阅读大概需要6分钟。
内容图文
![由于旧的ipv6配置,Python始终返回网络无法访问](/upload/InfoBanner/zyjiaocheng/799/d3cc46f057ff4784b094ea81804908fe.jpg)
我目前在使用python进行的任何请求中都遇到了网络无法访问的错误.无论我是使用urllib库还是请求库.
经过一些更多的研究后,它可能是由不正确的设置ipv6隧道引起的,它似乎仍处于活动状态:
$ip -6 addr show
$ip -6 route
default dev wlan0 metric 1
一些上下文:我正在运行Archlinux并且今天更新了系统,尽管今天似乎没有任何与python相关的特殊更新.我也是在virtualenv下运行它,但是其他的virtualenvs和在virtualenv之外使用我的Python也有同样的问题.
我正在使用VPN,但没有VPN我得到了同样的错误.
我也试过重新启动电脑,哈哈,通常有助于解决任何问题大声笑,但也没有帮助.
我觉得这可能与Archlinux有关,但我不确定.
这是我之前尝试设置ipv6隧道的方法:
sudo modprobe ipv6
sudo ip tunnel del sit1
sudo ip tunnel add sit1 mode sit remote 59.66.4.50 local $ipv4
sudo ifconfig sit1 down
sudo ifconfig sit1 up
sudo ifconfig sit1 add 2001:da8:200:900e:0:5efe:$ipv4/64
sudo ip route add ::/0 via 2001:da8:200:900e::1 metric 1
也使用此命令:
ip -6 addr add 2001:0db8:0:f101::1/64 dev eth0
在我的/etc/systemctl.conf中删除ipv6行后更新3,一些url开始工作:
>>> urllib2.urlopen('http://www.google.com')
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/usr/lib/python2.7/urllib2.py", line 126, in urlopen
return _opener.open(url, data, timeout)
File "/usr/lib/python2.7/urllib2.py", line 400, in open
response = self._open(req, data)
File "/usr/lib/python2.7/urllib2.py", line 418, in _open
'_open', req)
File "/usr/lib/python2.7/urllib2.py", line 378, in _call_chain
result = func(*args)
File "/usr/lib/python2.7/urllib2.py", line 1207, in http_open
return self.do_open(httplib.HTTPConnection, req)
File "/usr/lib/python2.7/urllib2.py", line 1177, in do_open
raise URLError(err)
urllib2.URLError: <urlopen error [Errno 101] Network is unreachable>
>>> urllib2.urlopen('http://baidu.com')
<addinfourl at 27000560 whose fp = <socket._fileobject object at 0x7f4d1fed5e50>>
这是来自ipython的错误日志.
In [1]: import urllib2
In [2]: urllib2.urlopen('http://google.com')
---------------------------------------------------------------------------
URLError Traceback (most recent call last)
/home/samos/<ipython console> in <module>()
/usr/lib/python2.7/urllib2.py in urlopen(url, data, timeout)
124 if _opener is None:
125 _opener = build_opener()
--> 126 return _opener.open(url, data, timeout)
127
128 def install_opener(opener):
/usr/lib/python2.7/urllib2.py in open(self, fullurl, data, timeout)
398 req = meth(req)
399
--> 400 response = self._open(req, data)
401
402 # post-process response
/usr/lib/python2.7/urllib2.py in _open(self, req, data)
416 protocol = req.get_type()
417 result = self._call_chain(self.handle_open, protocol, protocol +
--> 418 '_open', req)
419 if result:
420 return result
/usr/lib/python2.7/urllib2.py in _call_chain(self, chain, kind, meth_name, *args)
376 func = getattr(handler, meth_name)
377
--> 378 result = func(*args)
379 if result is not None:
380 return result
/usr/lib/python2.7/urllib2.py in http_open(self, req)
1205
1206 def http_open(self, req):
-> 1207 return self.do_open(httplib.HTTPConnection, req)
1208
1209 http_request = AbstractHTTPHandler.do_request_
/usr/lib/python2.7/urllib2.py in do_open(self, http_class, req)
1175 except socket.error, err: # XXX what error?
1176 h.close()
-> 1177 raise URLError(err)
1178 else:
1179 try:
URLError: <urlopen error [Errno 101] Network is unreachable>
我可以通过网络浏览器正常访问google.com,我非常确定网络是可以访问的.
解决方法:
您确定没有使用任何http代理服务器上网吗?
尝试将浏览器中的网络设置更改为无代理,并检查它是否仍连接到Internet.
如果您使用代理(假设代理地址为http://yourproxy.com),请尝试执行此操作以检查是否可以解决问题.
import urllib2
proxy = urllib2.ProxyHandler({'http': 'yourproxy.com'})
opener = urllib2.build_opener(proxy)
urllib2.install_opener(opener)
urllib2.urlopen('http://www.google.com')
内容总结
以上是互联网集市为您收集整理的由于旧的ipv6配置,Python始终返回网络无法访问全部内容,希望文章能够帮你解决由于旧的ipv6配置,Python始终返回网络无法访问所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。