![](/img/trans.png)
[英]Python Django: ImportError: cannot import name '...' from partially initialized module '...' (most likely due to a circular import) (......)
[英]Python ImportError: cannot import name '..' from partially initialized module '..' (most likely due to a circular import)
我已经阅读了有关此的其他线程,但它们并没有真正帮助我。
我必须有 2 个 .py 文件,它们都位于ets.routes
下,称为agreements.py
和approvals.py
。
文件agreements.py
.py 从approvals
中导入几种方法:
from ets.routes.approvals import getPendingApprovals, getIsApprover
它本身还公开了一个实用方法,该方法应该可用于名为authorize_agreement
的approvals
。
如果我这样做,现在在approvals.py
from ets.routes.agreements import authorize_agreement
我得到错误
ImportError: cannot import name 'getPendingApprovals' from partially initialized module 'ets.routes.approvals' (most likely due to a circular import)
(C:\gitForVS\app\api\ets\routes\approvals.py)
我不能将authorize_agreement
移动到像utils.py
这样的外部文件中,它确实应该在agreements.py
中,因为它使用了大量的数据库和相关的协议级代码,这些代码在那里可用。 只是这个函数应该由它的兄弟导入,而它自己导入一些兄弟的函数。 为什么会有这样的问题? 您是否需要在 Python 中进行单向导入(例如从approvals
-> 仅agreements
)?
您收到错误的原因是因为协议.py 无法从approvals.py 导入函数,而approvals.py 同时尝试从agreements.py 导入函数(因此出现循环导入错误)。 您的一个模块需要在从另一个模块导入它想要的功能之前定义另一个想要的功能。
例如:
档案一:
from fileb import sum2
def sum(a, b):
return a + b
文件 B:
def sum2(a, b):
return a + b + a
from filea import sum # This works
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.