web-dev-qa-db-ger.com

gaierror: [Errno 8] Knotenname oder Servername angegeben oder nicht bekannt (bei macOS Sierra)

socket.gethostbyname (socket.gethostname ()) hat auf OS X El Capitan gut funktioniert. Es funktioniert jedoch jetzt nicht mehr, nachdem der Mac auf macOS Sierra aktualisiert wurde.

Vielen Dank!

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

In den Kommentaren von OP gibt es eine Antwort auf der Grundlage von einer anderen Frage, , Die zur Bearbeitung von /etc/hosts, d. H. echo 127.0.0.1 $HOSTNAME >> /etc/hosts, erforderlich ist.

Alternativ können Sie socket.gethostbyname('localhost') verwenden, vorausgesetzt, dass localhost das ist, was Sie benötigen und in Ihrem /etc/hosts definiert sind. 

19
Armut

Dasselbe Problem tome . Ich ändere den Code in:

import socket
socket.gethostbyname("")

Und es funktioniert jetzt.

7
jxc

Ich hatte das gleiche Problem. Ich konnte Localhost nicht anpingen.

ping localhost

>> error ping: cannot resolve localhost: Unknown Host

Ich habe meine Hosts-Datei geändert.

Sudo nano/etc/hosts

Fügen Sie dies der Datei hinzu (verwenden Sie Tab/4 Leerzeichen, um >> 127.0.0.1 {tab/4spaces} localhost zu trennen). Speichern Sie es und starten Sie das Terminal neu.

127.0.0.1 localhost 

Um zu überprüfen, ob alles gut funktioniert, versuchen Sie es mit Ihrem localhost

ping localhost 

0
a_dino

Ich hatte heute das gleiche Problem (mit MacOS Mojave) und konnte es mithilfe des in den Kommentaren bereitgestellten link that @FBL beheben.

Insbesondere musste ich einfach auf Systemeinstellungen -> Freigeben gehen und die Freigabe aktivieren. (Ich habe die Druckerfreigabe aktiviert). Dann habe ich über ping $Host überprüft, dass es funktioniert. Danach konnte ich die Freigabe wieder deaktivieren und alles (sowohl ping $Host als auch python -c 'import socket; print socket.gethostbysocketname(socket.gethostname())) funktionierte weiterhin.

0
Chris Reyes