【问题标题】:Python Error:No host specifiedPython 错误:未指定主机
【发布时间】:2017-10-25 17:08:38
【问题描述】:

我刚刚写了一个简单的python演示,遇到了一个令人困惑的问题。

import requests

print(requests.get('http://www.sina.com.cn/'))

我知道正确的结果是返回响应[200]。但是在我的WIN10 x64中,它返回以下错误,我想可能是我的电脑出现了一些问题。

Traceback (most recent call last):
  File "C:\Users\CJY\Desktop\Python_Demo\web.py", line 2, in <module>
    print(requests.get('http://www.sina.com.cn/'))
  File "D:\python3.6.1\lib\site-packages\requests\api.py", line 72, in get
    return request('get', url, params=params, **kwargs)
  File "D:\python3.6.1\lib\site-packages\requests\api.py", line 58, in request
    return session.request(method=method, url=url, **kwargs)
  File "D:\python3.6.1\lib\site-packages\requests\sessions.py", line 518, in request
    resp = self.send(prep, **send_kwargs)
  File "D:\python3.6.1\lib\site-packages\requests\sessions.py", line 639, in send
    r = adapter.send(request, **kwargs)
  File "D:\python3.6.1\lib\site-packages\requests\adapters.py", line 403, in send
    conn = self.get_connection(request.url, proxies)
  File "D:\python3.6.1\lib\site-packages\requests\adapters.py", line 302, in get_connection
    conn = proxy_manager.connection_from_url(url)
  File "D:\python3.6.1\lib\site-packages\requests\packages\urllib3\poolmanager.py", line 279, in connection_from_url
    pool_kwargs=pool_kwargs)
  File "D:\python3.6.1\lib\site-packages\requests\packages\urllib3\poolmanager.py", line 408, in connection_from_host
    self.proxy.host, self.proxy.port, self.proxy.scheme, pool_kwargs=pool_kwargs)
  File "D:\python3.6.1\lib\site-packages\requests\packages\urllib3\poolmanager.py", line 218, in connection_from_host
    raise LocationValueError("No host specified.")
requests.packages.urllib3.exceptions.LocationValueError: No host specified.
[Finished in 0.2s]

请帮帮我!

【问题讨论】:

    标签: python host


    【解决方案1】:

    错误位置:

    Lib\urllib\request.py:
    proxyEnable = winreg.QueryValueEx(internetSettings, 'ProxyEnable')[0]
    

    如果 proxyEnable 是 string ,您会看到错误。原因是在您的注册表中,ProxyEnable 设置为 REG_SZ 而不是 REG_DWORD,所以更改它,一切正常。 打开注册表:

    HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Internet Settings\ProxyEnable

    (也可以直接搜索ProxyEnable)

    删除代理启用 创建一个新的 ProxyEnable 表单 (REG_SZ 0)(REG_DWORD 0x00000000(0))

    看下图,我的电脑语言是中文,但是ProxyEnable的位置是一样的。

    create a new ProxyEnable

    right value for ProxyEnable

    【讨论】:

      【解决方案2】:

      刚刚在 Windows 10 64 位上使用相同的 python 版本进行了测试,它对我有用。

      在 Windows 中使用请求时,当本地 dns 缓存指向不正确的值时,我遇到了同样的错误。 如果您仍然没有运气,请尝试刷新该机器上的本地 dns 缓存,我在命令提示符中输入以下命令。

      ipconfig /flushdns
      

      【讨论】:

      • 谢谢,我很困惑我创建了一个Linux VM(在VMware Workstation12中的ubuntu16.04LTS),其中相同的代码运行良好。经过几次尝试,我重新安装了我的系统。一切正常... ..
      【解决方案3】:

      这对我有用。请确保您有互联网连接,您可以ping www.sina.com.cn

      【讨论】:

      • 谢谢。但是我确信我的互联网是好的,只是所有的python互联网包比如“urllib”或“requests”都无法连接到互联网。
      猜你喜欢
      • 2018-02-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-09-28
      • 2021-08-10
      • 2013-07-04
      • 2014-02-08
      相关资源
      最近更新 更多