在子模块优雅导入上一级模块
背景:
考虑如下文件结构:
config.py main.py ├── folder ├── submodule.py
登录后复制
问题:
我们希望在 main.py 和 submodule.py 中使用 config.py 中的参数 args。但直接导入会导致如下错误:
valueerror: attempted relative import beyond top-level package
登录后复制
优雅解决方案:
步骤 1:根目录运行文件
避免使用 python folder/submodule.py 命令,改为直接在根目录运行 submodule.py。此时,submodule.py 处在顶层,可以访问根目录中的模块。
步骤 2:绝对导入
在 main.py 和 submodule.py 中,使用绝对导入导入 config.py 中的 args。
# main.py from .config import args # submodule.py from config import args
登录后复制
注意:
不要使用相对导入,因为相对导入会受到根目录的限制。绝对导入直接从文件系统根目录开始,不受子目录限制。
延伸阅读:
- [python 当前路径和导包路径问题全解析](https://www.dazhuanlan.com/2021/02/13/532303/#toc-4.-%e4%b8%89%e5%bc%8f%e9%92%88%e5%af%bc%e5%bc%95%e6%96%b9%e6%b3%95)
以上就是如何在子模块中优雅地导入上一级模块的配置参数?的详细内容,更多请关注抖狐科技其它相关文章!
-
tell和talk和speak的区别
tell、talk、speak 都有说话之意,但侧重点不同:tell 重在传递信息,talk 强调交谈,speak 指一般性的说话行为。1. tell 传达权威性信息,通常要求宾语。2. talk 进...
-
仙宗大掌门怎么快速增加繁荣度 仙宗大掌门新手攻略推荐
新手掌门想要提高仙宗繁荣度,面临着诸多挑战。php小编香蕉在此分享独家攻略,详解新手快速提升仙宗繁荣度的技巧和策略,助力新手轻松管理仙宗,开启修仙之旅。以下内容将逐一阐述繁荣度提升的诀窍,新手务必仔细...
-
《冲就完事模拟器》万圣节季节性DLC上线 免费获取
10月25日,《冲就完事模拟器》上线了万圣节季节性免费DLC,所有玩家均可获得。在本次的季节性工作中,玩家将进入一个满布积垢和粘液的鬼屋,这里有阴森的墓碑、诡异的南瓜田,还有大量的脏污,你需要用水枪清...
-
Java函数式编程中递归式贪心算法的技巧
递归式贪心算法是一种函数式编程策略,用于解决优化问题,它结合了递归和贪心算法的优势:基础案例:当问题可以轻松解决时确定。递归调用:将问题分解为更小的子问题,并递归调用算法。合并结果:将子问题的解决方案...
-
C++ 函数指针:指向成员函数
c++++ 中的函数指针可指向成员函数,允许我们灵活调用对象方法。语法:returntype (classname::*memberfunctionname)(parameters);优点:灵活性、可...