Scapy import error 'socket.gaierror: [Errno 11001] getaddrinfo failed'

Scapy import error 'socket.gaierror: [Errno 11001] getaddrinfo failed'

我正在尝试在 windows 10、python 2.7.11 上安装 Scapy,但遇到了这个错误:

>>> from scapy.all import *
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "C:\tools\python\lib\site-packages\scapy\all.py", line 25, in <module>
    from scapy.route import *
  File "C:\tools\python\lib\site-packages\scapy\route.py", line 182, in <module>
    _betteriface = conf.route.route("0.0.0.0", verbose=0)[0]
  File "C:\tools\python\lib\site-packages\scapy\route.py", line 150, in route
    aa = atol(a)
  File "C:\tools\python\lib\site-packages\scapy\utils.py", line 400, in atol
    except socket.error:
socket.gaierror: [Errno 11001] getaddrinfo failed

这是什么意思?

python 2.7 documentation 中所述,此错误是由 getaddrinfo() 或 getnameinfo() 函数引发的。
从堆栈跟踪来看,scapy 模块在其导入期间尝试初始化套接字并且端口号无效(我们可以看到正在调用 atol 函数,它将字符串转换为整数)。
目前尚不清楚真正的问题是什么。但是,您可以尝试以下操作:

  • 确保你有正确版本的 python 和 scapy。我建议您从 pip 安装 scapy,并可能使用 virtual environment 到 运行 您的脚本。
  • 您也可以尝试 compile scapy from source,或查看 github 中的问题部分,看看您的问题是否真的是一个正在处理的已知问题。
  • 也许 scapy 会尝试初始化一个原始套接字(我不知道他们为什么会这样做,但值得一试),这需要管理员权限。尝试 运行 以管理员身份运行您的脚本。

    希望这有帮助