Ошибка импорта Scapy «socket.gaierror: [Errno 11001] getaddrinfo failed»

Я пытаюсь установить Scapy на Windows 10, Python 2.7.11 и застрял на этой ошибке:

>>> 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

Что это значит?


person Idan    schedule 13.03.2018    source источник


Ответы (1)


Как указано в документации по Python 2.7, возникает эта ошибка либо функцией getaddrinfo(), либо функцией getnameinfo().
Судя по трассировке стека, модуль scapy пытается инициализировать сокет во время импорта, а номер порта недействителен (мы можем видеть atol вызывается функция, которая преобразует строку в целое число).
Это неясно, в чем реальная проблема. Тем не менее, вы можете попробовать следующее:

  • Убедитесь, что у вас правильная версия python и scapy. Я предлагаю вам установить scapy из pip и, возможно, использовать виртуальную среду для запуска вашего скрипта.
  • Вы также можете попробовать скомпилировать scapy из исходного кода или проверить раздел проблем на github, чтобы узнать, не возникла ли ваша проблема. на самом деле известная проблема, над которой работают.
  • Возможно, scapy пытается инициализировать необработанный сокет (я не знаю, почему они это делают, но стоит попробовать), для чего требуются права администратора. Попробуйте запустить скрипт от имени администратора.

    Надеюсь, это поможет
person Fire    schedule 13.03.2018
comment
Спасибо! Похоже, что проблема заключается в простой ошибке отступа, поскольку теперь она разделена: ' Файл C:\tools\python\lib\site-packages\scapy\utils.py, строка 399 ip = inet_aton(x) ^ IndentationError: unindent not соответствовать любому внешнему уровню отступа, который является кодом в разделе try перед кодом, который был подан. как я могу сам скомпилировать файл python в скомпилированный файл python? - person Idan; 14.03.2018
comment
Библиотека Python на самом деле представляет собой просто файл Python (или несколько файлов). Вам не нужно ничего компилировать, хотя можно предварительно скомпилировать исходные файлы Python. - person Fire; 16.03.2018