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

使用本地包相对导入时ConfigParser无法读取文件

问题:配置文件读取失败,提示Section db_info未找到

错误回溯信息

Traceback (most recent call last):
  File "F:\Coding\user.py", line 2, in <module>
    from db_handler.handler import check
  File "F:\Coding\db_handler\handler.py", line 14, in <module>
    params = db_config()
             ^^^^^^^^^^^
  File "F:\Coding\db_handler\config.py", line 22, in db_config
    raise Exception('Section {0} not found in the {1} file'.format(section, filename))
Exception: Section db_info not found in the config.ini file

项目文件结构

├db_handler
|   └───config.ini
|   └───config.py
|   └───handler.py
|   └───__init__.py
├user.py

各文件内容

config.ini

[db_info]
host=somesite.com
database=profiles
user=hilfing
password=pass
port=5432

config.py

def db_config(filename='config.ini', section='db_info'):
    # create a parser
    parser = ConfigParser()
    # read config file
    parser.read(filename)
    db = {}
    if parser.has_section(section):
        params = parser.items(section)
        for param in params:
            db[param[0]] = param[1]
    else:
        raise Exception('Section {0} not found in the {1} file'.format(section, filename))
    return db

handler.py

import psycopg2
from .config import db_config

# read connection parameters
params = db_config()

# connect to the PostgreSQL server
try:
    conn = psycopg2.connect(**params)
except (Exception, psycopg2.DatabaseError) as error:
    print(error)

user.py

from db_handler.handler import check

c = check()
print(c)

#Other code...

已尝试的解决方法

  • 给config.py中的filename参数添加.或./前缀,问题未解决
  • 将handler.py中的相对导入from .config import db_config改为import config,单独运行handler.py时有效,但从user.py导入整个包时出错

最终解决办法

将db_handler目录下的config.ini移动到项目根目录(与user.py同级)即可正常读取配置。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.02 13:04:53