CodeQL 文档

模块级循环导入

ID: py/unsafe-cyclic-import
Kind: problem
Security severity: 
Severity: error
Precision: high
Tags:
   - reliability
   - correctness
   - types
Query suites:
   - python-security-and-quality.qls

单击以在 CodeQL 代码库中查看查询

循环导入是一个 import,它导入另一个模块,而该模块(可能间接)导入包含 import 语句的模块。如果循环导入中的所有导入都发生在模块级别,那么在模块完成初始化的一半时,该模块将被导入。这可能会导致意外的错误,因为被导入的模块的部分可能尚未存在。

除了可能的错误之外,循环导入表明两个模块是循环依赖的。这意味着这两个模块无法独立测试,并且会使理解系统架构变得更加困难。

建议

可以通过删除任何一个导入来打破循环。如果只有一个函数或方法需要导入,那么考虑将其移动到另一个模块并删除导入。如果这两个模块紧密相连,那么将相互依赖的部分移动到第三个模块,并让这两个原始模块都导入该模块。

参考资料

  • ©2025GitHub, Inc.
  • 条款
  • 隐私