【问题标题】:socket.gethostbyname fails on macOSsocket.gethostbyname 在 macOS 上失败
【发布时间】:2021-11-12 01:56:58
【问题描述】:

有谁知道为什么以下命令在 macOS 上会报错:

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

出现以下错误:

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

系统: macOS Big Sur(版本 11.2)
Python:Python 3.7.11(默认,2021 年 7 月 27 日,07:03:16)

在 Windows 系统中,它可以正常工作并返回 IPv4 地址。

我还关闭了 VPN,正如以下帖子中指出的那样:
nodename nor servname provided, or not known

【问题讨论】:

  • “我用本地主机尝试了 Dask 的例子,...” - 你似乎假设了一些特定的上下文,不幸的是读者没有与你分享。没有这样的背景,这个问题可能无法理解和回答。
  • 我编辑了这个问题。问题是一样的。我想有些人在某个时候有过。
  • 对我来说似乎是几个问题的重复,请参阅this google search 或作为一个示例Simple Python socket server does not run on macOS
  • 感谢@SteffenUllrich。

标签: python sockets


【解决方案1】:

我在回答您的 Apple 问题论坛中找到了答案。

https://apple.stackexchange.com/a/253834/439511

总结:

我们需要将 IP 地址和主机名添加到 /etc/hosts 文件中。
首先,获取主机名并将其复制到剪贴板(这将是 your_hostname)

echo $HOSTNAME

然后打开 /etc/hosts 文件 (sudo vi /etc/hosts) 并添加以下行:

127.0.0.1  your_hostname

重新打开终端。这解决了我的问题。

更新:@BrianC 在他们的回复中也提到了这一点,不知何故我第一眼就错过了。在此处查看回复:

https://stackoverflow.com/a/40409894/6246352

【讨论】:

    猜你喜欢
    • 2012-11-16
    • 2015-11-13
    • 1970-01-01
    • 2017-01-14
    • 1970-01-01
    • 2021-01-20
    • 2018-08-07
    • 2020-03-31
    • 1970-01-01
    相关资源
    最近更新 更多