我有两个模块,它们往往相互导入,因为它们将在类中相互使用。我在this link中发现,它告诉我们使用try/except
语句和imports来处理循环导入,但是我仍然得到KeyError
。
模块的名称是brand.py
,它包含以下代码:
try:
from erp.common.models.productwithspecs import ProductWithSpec, ProductWithSpecSchema
except ImportError:
import sys
ProductWithSpec = sys.modules[__package__ + '.productwithspecs.ProductWithSpec']
但我得到了以下错误:
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
发布于 2020-04-07 08:49:24
我有两个模块,它们倾向于相互导入,因为它们将在类中相互使用
然后你就有了一个设计问题,正确的解决方案不是围绕它,而是解决这个设计问题。模块之间的循环依赖是一个很大的不,不管语言是什么,即使在技术上是可能的。
根据具体情况,这里有三种可能的解决方案:将公共dep提取到第三个模块,将两个模块重新组合在一个模块中,以及使用依赖注入。但是,无论如何,要避免诉诸丑陋的黑客攻击,这将导致各种问题(在这里,做了:-/
,现在我更清楚了)。
https://stackoverflow.com/questions/61075955
复制相似问题