首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在导入Python时处理错误

如何在导入Python时处理错误
EN

Stack Overflow用户
提问于 2020-04-07 08:37:31
回答 1查看 89关注 0票数 0

我有两个模块,它们往往相互导入,因为它们将在类中相互使用。我在this link中发现,它告诉我们使用try/except语句和imports来处理循环导入,但是我仍然得到KeyError

模块的名称是brand.py,它包含以下代码:

代码语言:javascript
运行
复制
try:
    from erp.common.models.productwithspecs import ProductWithSpec, ProductWithSpecSchema
except ImportError:
    import sys
    ProductWithSpec = sys.modules[__package__ + '.productwithspecs.ProductWithSpec']

但我得到了以下错误:

代码语言:javascript
运行
复制
File "/home/arsalan/python_practise/MY_WORK_FILES/React_works/React_Container_Mount/backend/erp/common/models/brand.py", line 13, in <module>
    ProductWithSpec = sys.modules[__package__ + '.productwithspecs.ProductWithSpec']
KeyError: 'erp.common.models.productwithspecs.ProductWithSpec'` Can anybody point out the mistake
EN

Stack Overflow用户

回答已采纳

发布于 2020-04-07 08:49:24

我有两个模块,它们倾向于相互导入,因为它们将在类中相互使用

然后你就有了一个设计问题,正确的解决方案不是围绕它,而是解决这个设计问题。模块之间的循环依赖是一个很大的不,不管语言是什么,即使在技术上是可能的。

根据具体情况,这里有三种可能的解决方案:将公共dep提取到第三个模块,将两个模块重新组合在一个模块中,以及使用依赖注入。但是,无论如何,要避免诉诸丑陋的黑客攻击,这将导致各种问题(在这里,做了:-/,现在我更清楚了)。

票数 2
EN
查看全部 1 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61075955

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档