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
答案 0 :(得分:20)
OP基于another question,的评论中有一个答案
这需要编辑/etc/hosts
,即echo 127.0.0.1 $HOSTNAME >> /etc/hosts
。
或者,您可以使用socket.gethostbyname('localhost')
,假设localhost
是您需要的,并且已在/etc/hosts
中定义。
答案 1 :(得分:8)
同样的问题。 我将代码更改为:
import socket
socket.gethostbyname("")
它现在有效。
答案 2 :(得分:1)
另一个简单的解决方案是 去终端粘贴 sudo nano /etc/hosts 找到您需要的 IP 地址、IPv4 等。 添加一个新行,如 190.123.123.3 你的终端名称.local 它对我有用
答案 3 :(得分:0)
我遇到了同样的问题。我无法ping通本地主机。
ping本地主机
>> error ping: cannot resolve localhost: Unknown host
我更改了主机文件。
sudo nano / etc / hosts
将此添加到文件中(使用Tab / 4空格分隔>> 127.0.0.1 {tab / 4spaces} localhost)保存并重新启动终端。
127.0.0.1本地主机
要确认一切正常,请尝试ping您的本地主机
ping本地主机
答案 4 :(得分:0)
今天(使用MacOS Mojave)我遇到了同样的问题,并且能够使用评论中link提供的@FBL来解决它。
具体地说,我只需要转到“系统偏好设置”->“共享”并启用共享。 (我启用了打印机共享)。然后,我通过ping $HOST
验证了它是否可以正常工作。之后,我能够关闭共享,并且所有内容(ping $HOST
和python -c 'import socket; print socket.gethostbysocketname(socket.gethostname())
)仍然有效。
答案 5 :(得分:0)
如果您使用的是Jupyter笔记本,请尝试
IP4=str(ipaddress.ip_address(8888))
IPAddr = socket.gethostbyname(IP4)
别忘了导入ipaddress和套接字
答案 6 :(得分:0)
使用/ etc / hosts中指定的计算机名称,而不是使用localhost。
例如,/ etc / host将具有以下内容:
127.0.0.1 ET02282-MAC.local
127.0.0.1 localhost
在您的连接中,使用“ ET02282-MAC.local”
答案 7 :(得分:0)
似乎是python bug?您需要设置主机名和ipv4,然后可以对其进行修复。
import sokcet
hostname = socket.gethostname()
print(hostname) >> samzong
# make sure do it
!echo "127.0.0.1 samzong" >> /private/etc/hosts
答案 8 :(得分:0)