web-dev-qa-db-ja.com

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

別の質問 に基づいたOPのコメントには答えがあり、/etc/hosts、つまりecho 127.0.0.1 $HOSTNAME >> /etc/hostsを編集する必要があります。

または、localhostが必要であり、/etc/hostsで定義されていると仮定して、socket.gethostbyname('localhost')を使用できます。

22
Armut

同じ問題の本。コードを次のように変更します。

import socket
socket.gethostbyname("")

そして、それは今動作します。

10
jxc

今日、(MacOS Mojaveで)同じ問題が発生し、コメントで提供されている link that @ FBL を使用して修正できました。

具体的には、[システム環境設定]-> [共有]に移動して、共有を有効にする必要がありました。 (プリンターの共有を有効にしました)。次に、ping $Hostを介して動作していることを確認しました。その後、共有をオフに戻すことができ、すべて(ping $Hostpython -c 'import socket; print socket.gethostbysocketname(socket.gethostname())の両方)が引き続き機能しました。

3
Chris Reyes

私は同じ問題を抱えていました。 localhostにpingできませんでした。

ping localhost

>> error ping: cannot resolve localhost: Unknown Host

Hostsファイルを変更しました。

Sudo nano/etc/hosts

これをファイルに追加します(Tab/4スペースを使用して分離します>> 127.0.0.1 {tab/4spaces} localhost)。ファイルを保存し、ターミナルを再起動します。

127.0.0.1 localhost

すべてが正常に動作するかどうかを確認するには、ローカルホストにpingを実行してみてください

ping localhost

0
a_dino