Gaierror: [Errno 8] nodename или servname предоставлено или неизвестно (с macOS Sierra)

socket.gethostbyname(socket.gethostname()) хорошо работал на OS X El Capitan. Однако теперь он не работает после обновления Mac до macOS Sierra.

Спасибо!

import socket
socket.gethostbyname(socket.gethostname())

Traceback (most recent call last):
  File "<pyshell#26>", line 1, in <module>
    socket.gethostbyname(socket.gethostname())
gaierror: [Errno 8] nodename nor servname provided, or not known

Ответ 1

В комментариях OP есть ответ на еще один вопрос. который требует редактирования /etc/hosts, i.e echo 127.0.0.1 $HOSTNAME >> /etc/hosts.

В качестве альтернативы вы можете использовать socket.gethostbyname('localhost'), считая, что localhost - это то, что вам нужно, и оно определено в вашем /etc/hosts.

Ответ 2

Та же проблема. Я меняю код на:

import socket
socket.gethostbyname("")

И теперь это работает.

Ответ 3

У меня была та же проблема сегодня (с MacOS Mojave), и я смог ее исправить, используя ссылку, которую @FBL предоставил в комментариях.

В частности, мне просто нужно было перейти в Системные настройки → Общий доступ и включить общий доступ. (Я включил общий доступ к принтеру). Затем я убедился, что он работает через ping $HOST. После этого я смог снова отключить общий доступ, и все (как ping $HOST, так и python -c 'import socket; print socket.gethostbysocketname(socket.gethostname())) все еще работало.

Ответ 4

У меня была такая же проблема. Я не смог пропинговать localhost.

  ping localhost

>> error ping: cannot resolve localhost: Unknown host

Я изменил файл хостов.

  sudo nano/etc/hosts

Добавьте это в файл (используйте пробелы Tab/4 для разделения >> 127.0.0.1 {tab/4spaces} localhost) Сохраните его и перезапустите терминал.

  127.0.0.1 localhost

Чтобы проверить, все ли работает нормально, попробуйте проверить связь с вашим локальным хостом

  ping localhost

Ответ 5

Если вы используете ноутбук Jupyter или нет, попробуйте это

IP4=str(ipaddress.ip_address(8888))
IPAddr = socket.gethostbyname(IP4)

не забудьте импортировать ipaddress & разъем