gaierror: [Errno 8] nodename noch servname opgegeven, of niet bekend (met macOS Sierra)

socket.gethostbyname(socket.gethostname()) werkte goed op OS X El Capitan. Het werkt nu echter niet meer nadat de Mac is geüpdatet naar macOS Sierra.

Bedankt!

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

Antwoord 1, autoriteit 100%

Er is een antwoord in de opmerkingen van OP gebaseerd op een andere vraag,
waarvoor /etc/hostsmoet worden bewerkt, d.w.z. echo 127.0.0.1 $HOSTNAME >> /etc/hosts.

Als alternatief kunt u socket.gethostbyname('localhost')gebruiken, ervan uitgaande dat localhostis wat u nodig heeft en gedefinieerd is in uw /etc/hosts.


Antwoord 2, autoriteit 48%

Hetzelfde probleem deel.
Ik verander de code in:

import socket
socket.gethostbyname("")

En het werkt nu.


Antwoord 3, autoriteit 13%

Ik had vandaag hetzelfde probleem (met MacOS Mojave) en kon het oplossen met de linkdie @FBLheeft opgegeven in de opmerkingen.

In het bijzonder moest ik gewoon naar Systeemvoorkeuren -> Delen en delen inschakelen. (Ik heb printerdeling ingeschakeld). Daarna heb ik geverifieerd dat het werkte via ping $HOST. Daarna kon ik het delen weer uitschakelen en alles (zowel ping $HOSTals python -c 'import socket; print socket.gethostbysocketname(socket.gethostname())) werkte nog steeds.


Antwoord 4, autoriteit 6%

Het lijkt op een python-bug? U moet de hostnaam & ipv4 , hierna kunt u het repareren.

import socket
hostname = socket.gethostname()
print(hostname)  >> samzong
# make sure do it
!echo "127.0.0.1 samzong" >> /private/etc/hosts

Antwoord 5, autoriteit 3%

Gebruik in plaats van de localhost de computernaam zoals gespecificeerd in /etc/hosts.

Bijvoorbeeld, /etc/host zou zoiets als dit hebben:

127.0.0.1 ET02282-MAC.local
127.0.0.1 localhost

En gebruik in uw verbinding “ET02282-MAC.local”


Antwoord 6, autoriteit 3%

Een andere eenvoudige oplossing is:
Ga terminal plakken sudo nano /etc/hosts
vind uw ip-adres dat nodig is, IPv4 enz.
voeg een nieuwe regel toe zoals
190.123.123.3 Uwterminalnaam.local
het werkte voor mij


Antwoord 7

Ik had hetzelfde probleem. Ik kon localhost niet pingen.

ping localhost

>> error ping: cannot resolve localhost: Unknown host

Ik heb mijn hosts-bestand gewijzigd.

sudo nano /etc/hosts

Voeg dit toe aan het bestand (gebruik Tab/4 spaties om>> 127.0.0.1{tab/4spaces}localhost te scheiden) Sla het op en start de terminal opnieuw.

127.0.0.1 localhost

Probeer je localhost te pingen om te controleren of alles goed werkt

ping localhost


Antwoord 8

Als u Jupyter-notebook gebruikt of niet, probeer dit dan

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

vergeet niet om ipaddress & stopcontact

Other episodes