繁体   English   中英

Python ImportError:无法从部分初始化的模块“..”导入名称“..”(很可能是由于循环导入)

[英]Python ImportError: cannot import name '..' from partially initialized module '..' (most likely due to a circular import)

我已经阅读了有关此的其他线程,但它们并没有真正帮助我。

我必须有 2 个 .py 文件,它们都位于ets.routes下,称为agreements.pyapprovals.py 在此处输入图像描述

文件agreements.py .py 从approvals中导入几种方法:

from ets.routes.approvals import getPendingApprovals, getIsApprover

它本身还公开了一个实用方法,该方法应该可用于名为authorize_agreementapprovals

如果我这样做,现在在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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM