Python中如何便捷切换导入同名子包的库并保留包名调用方式?
解决方案
方式一:直接以p1.f()形式调用
修改你的lib.py文件,放弃import *的写法,直接导入子包并指定别名:
# lib.py import lib1.p1 as p1 import lib1.p2 as p2
在主代码中只需导入这两个子包:
from lib import p1, p2 # 调用示例 p1.f() p2.g()
切换库时,仅需将lib.py中的lib1替换为lib2,主代码无需任何改动。
方式二:以lib.p1.f()形式调用
若希望保留lib作为顶层前缀,可将lib.py改为一个包结构:
- 创建
lib文件夹,并在其中新建__init__.py文件:
lib/ __init__.py
- 在
__init__.py中写入导入逻辑:
# lib/__init__.py import lib1.p1 as p1 import lib1.p2 as p2
- 主代码中通过导入
lib包来调用:
import lib # 调用示例 lib.p1.f() lib.p2.g()
切换库时,同样只需修改__init__.py中的lib1为lib2即可。
进阶优化:用变量快速切换
如果不想每次手动替换字符串,可通过配置变量实现更便捷的切换:
# 在lib.py或lib/__init__.py中 TARGET_LIB = "lib1" # 改为"lib2"即可切换目标库 if TARGET_LIB == "lib1": import lib1.p1 as p1 import lib1.p2 as p2 elif TARGET_LIB == "lib2": import lib2.p1 as p1 import lib2.p2 as p2
这种方式避免了字符串替换操作,降低出错概率。
内容的提问来源于stack exchange,提问作者Vladimir Ilyin
相关产品推荐
相关产品推荐

