安装库时,Python pip引发NewConnectionError

时间:2018-10-15 11:29:11

标签: server pip install

我在Linux服务器上运行了Python 3。我需要安装一些库(显然),所以我在尝试:

pip3 install numpy

这会导致以下错误:

Collecting numpy
  Retrying (Retry(total=4, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError('<urllib3.connection.VerifiedHTTPSConnection object at 0x7f7542572828>: Failed to establish a new connection: [Errno -2] Name or service not known',)': /simple/numpy/
  Retrying (Retry(total=3, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError('<urllib3.connection.VerifiedHTTPSConnection object at 0x7f7542572eb8>: Failed to establish a new connection: [Errno -2] Name or service not known',)': /simple/numpy/
  Retrying (Retry(total=2, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError('<urllib3.connection.VerifiedHTTPSConnection object at 0x7f7542572be0>: Failed to establish a new connection: [Errno -2] Name or service not known',)': /simple/numpy/
  Retrying (Retry(total=1, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError('<urllib3.connection.VerifiedHTTPSConnection object at 0x7f7542572d30>: Failed to establish a new connection: [Errno -2] Name or service not known',)': /simple/numpy/
  Retrying (Retry(total=0, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError('<urllib3.connection.VerifiedHTTPSConnection object at 0x7f7542572860>: Failed to establish a new connection: [Errno -2] Name or service not known',)': /simple/numpy/
  Could not find a version that satisfies the requirement numpy (from versions: )
No matching distribution found for numpy

问题:

  1. 可能是什么问题?为什么会引发此错误?
  2. 将来如何避免这种情况?

随时询问更多细节。

更新: 我尝试了ping google.com,但收到错误消息:

ping: google.com: Name or service not known

但是当我尝试ping 8.8.8.8时,我得到了:

PING 8.8.8.8 (8.8.8.8) 56(84) bytes of data.
64 bytes from 8.8.8.8: icmp_seq=1 ttl=118 time=10.8 ms
64 bytes from 8.8.8.8: icmp_seq=2 ttl=118 time=10.6 ms
64 bytes from 8.8.8.8: icmp_seq=3 ttl=118 time=10.6 ms
64 bytes from 8.8.8.8: icmp_seq=4 ttl=118 time=10.7 ms
64 bytes from 8.8.8.8: icmp_seq=5 ttl=118 time=10.6 ms
64 bytes from 8.8.8.8: icmp_seq=6 ttl=118 time=10.7 ms
64 bytes from 8.8.8.8: icmp_seq=7 ttl=118 time=10.7 ms
64 bytes from 8.8.8.8: icmp_seq=8 ttl=118 time=10.7 ms
64 bytes from 8.8.8.8: icmp_seq=9 ttl=118 time=10.7 ms
64 bytes from 8.8.8.8: icmp_seq=10 ttl=118 time=10.7 ms
64 bytes from 8.8.8.8: icmp_seq=11 ttl=118 time=10.7 ms
64 bytes from 8.8.8.8: icmp_seq=12 ttl=118 time=10.8 ms
64 bytes from 8.8.8.8: icmp_seq=13 ttl=118 time=10.7 ms
64 bytes from 8.8.8.8: icmp_seq=14 ttl=118 time=10.7 ms
64 bytes from 8.8.8.8: icmp_seq=15 ttl=118 time=10.7 ms
64 bytes from 8.8.8.8: icmp_seq=16 ttl=118 time=10.7 ms
64 bytes from 8.8.8.8: icmp_seq=17 ttl=118 time=10.6 ms
64 bytes from 8.8.8.8: icmp_seq=18 ttl=118 time=10.7 ms
64 bytes from 8.8.8.8: icmp_seq=19 ttl=118 time=10.6 ms
64 bytes from 8.8.8.8: icmp_seq=20 ttl=118 time=10.7 ms
64 bytes from 8.8.8.8: icmp_seq=21 ttl=118 time=10.7 ms
64 bytes from 8.8.8.8: icmp_seq=22 ttl=118 time=10.7 ms
64 bytes from 8.8.8.8: icmp_seq=23 ttl=118 time=10.7 ms
64 bytes from 8.8.8.8: icmp_seq=24 ttl=118 time=10.7 ms
64 bytes from 8.8.8.8: icmp_seq=25 ttl=118 time=10.7 ms
64 bytes from 8.8.8.8: icmp_seq=26 ttl=118 time=10.7 ms
^C
--- 8.8.8.8 ping statistics ---
26 packets transmitted, 26 received, 0% packet loss, time 25046ms
rtt min/avg/max/mdev = 10.655/10.731/10.827/0.073 ms

DNS可能有问题吗?我该怎么办?

8 个答案:

答案 0 :(得分:4)

我要做的就是将nameserver 8.8.8.8添加到/etc/resolv.conf文件中。 8.8.8.8是Google的公共免费DNS服务器的IP。因此,由于系统必须知道域名的IP地址,因此我们必须提供一种做到这一点的方法。公共DNS服务器将域名绑定到IP地址。

答案 1 :(得分:3)

对于Windows 10用户,请转到Settings -> Network and Internet -> Proxy

禁用自动检测设置

enter image description here

答案 2 :(得分:1)

不是原始问题的答案。

Retrying (Retry(total=4, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError('<urllib3.connection.VerifiedHTTPSConnection object at 0x7f7542572828>: Failed to establish a new connection: [Errno -2] Name or service not known',)':

我在编写 Dockerfile 时也出现了同样的警告。
显然是网络问题。
但是,从主机到pip源的DNS和ping结果是好的。
最终,我从 pip 部分的开头到结尾删除了 Dockerfile。
在我 exec 进入容器后,网络无法获取 DNS 服务器。

我的同事提醒,iptables 发生了变化。
当对 iptables 进行更改时,服务器需要重新启动 docker 引擎才能使其工作。
可以但不限于sudo service docker restart
但是,希望这个答案可以节省其他人的时间。

答案 3 :(得分:0)

如果使用代理网络并且遇到相同的问题,请使用

  

pip install --proxy =“ proxy:portno” numpy

答案 4 :(得分:0)

检查代理设置中的代理配置。 然后使用:

 pip install --proxy=http://yourproxyurl:port numpy(Python package name)

答案 5 :(得分:0)

使用VPN时出现此问题。不知道是什么原因,但是将其关闭可以解决问题。

答案 6 :(得分:0)

您可以关闭所有代理程序并将 Windows 代理部分留空。我在使用 Lantern 和 Psiphon 时遇到了这个问题。

答案 7 :(得分:0)

按照此链接中的说明安装网络管理器后,我在 Raspbian 10 上遇到了这个问题:

https://www.giovanni.panozzo.it/guides/raspbian-stretch-network-manager-openvpn.html

撤消以下步骤后,DNS 再次起作用!

sudo ln -sf /run/resolvconf/resolv.conf /etc/resolv.conf

(幸运的是我保存了原始文件!)