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

如何导入Python模块并保留原引用db.connection?

解决模块路径变更后保留旧引用的问题

问题回顾

原本模块路径为db/connection.py,使用import db.connection导入,调用方式为db.connection.open_connection();现在模块移至project/db/connection.py,希望保留db.connection的引用方式,无需修改调用代码。

可行解决方案

1. 使用模块别名(最简单直接)

修改导入语句为:

import project.db as db

或者更精准地导入子模块:

import project.db.connection as db_connection

之后调用db.connection.open_connection()的代码完全不用改动,因为db现在指向project.db模块,db.connection自然对应新路径下的模块。

2. 通过sys.modules映射旧模块名(完全不修改原有导入语句)

在项目的入口文件(如启动脚本、主模块)中添加以下代码:

import sys
from project import db as project_db

# 将旧模块名映射到新模块对象
sys.modules['db'] = project_db
sys.modules['db.connection'] = project_db.connection

这样后续任何模块执行import db.connection时,Python都会直接返回新路径下的模块对象,原有导入和调用代码无需做任何修改。

3. 创建过渡模块(适合长期兼容场景)

在项目根目录新建db文件夹,并在其中创建__init__.py文件,写入:

import sys
from project import db as _db

# 同步新模块的所有公开属性
__all__ = _db.__all__
for attr in dir(_db):
    if not attr.startswith('_'):
        setattr(sys.modules[__name__], attr, getattr(_db, attr))

# 确保子模块可被导入
from project.db import connection

这样原来的import db.connection会自动指向project.db.connection,完全兼容旧的调用方式,同时符合Python模块的结构规范。

关于from project import db.connection报错的原因

Python的from ... import语法不支持点号嵌套的模块路径写法,正确的写法应为from project.db import connection或from project import db后再引用db.connection。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.16 01:35:21