You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python3.8 Win下ConfigParser取配置报[Errno 11001] getaddrinfo failed如何解决

问题原因及解决方案

根因分析

该报错是DNS域名解析失败导致的,直接传入字符串正常、读取配置传入报错的核心原因有两类:

  1. 读取到的host值首尾存在不可见字符:Windows系统的换行符为\r\n、部分编辑器保存配置时会在配置项末尾追加空格/回车、或者配置文件带UTF-8 BOM头,都会导致ConfigParser读取到的host字符串包含肉眼不可见的特殊字符。普通打印逻辑不会显示这些特殊字符,所以看起来和正常地址一致,但传入域名解析逻辑时会被当做地址的一部分,导致解析失败。
  2. 配置文件编码不匹配:ConfigParser的read方法在Windows系统下默认采用系统编码(通常是GBK),如果你的config.ini是按UTF-8编码保存的,就会出现读取编码异常,导致字符串乱码无法解析。

解决方案

  • 先确认是否存在不可见字符,在读取host后添加校验逻辑:
host = self._config.get('imap', 'host')
print(repr(host)) # repr会转义显示所有不可见字符,比如末尾的回车会显示为\r
print(len(host), len("实际的IMAP地址字符串")) # 对比二者长度是否一致
  • 确认存在首尾空白/不可见字符的话,调用strip()方法清理即可:
self._mail = imaplib.IMAP4_SSL(self._config.get('imap', 'host').strip(), 993)
  • 如果是编码不匹配问题,给read方法指定正确的编码:
# 按你的配置文件实际编码填写,常见为utf-8或gbk
self._config.read('config.ini', encoding='utf-8')
  • 额外排查:可将配置文件路径改为绝对路径读取,避免Windows下工作目录偏移读取到错误的配置文件。

内容的提问来源于stack exchange,提问作者TehPirate

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.05 03:57:03