美文网首页
浅谈python中的循环导入

浅谈python中的循环导入

作者: 小尤root | 来源:发表于2019-04-11 16:36 被阅读0次

循环导入会报错,报找不到依赖的错误,也就是报找不到模块的错误。如下类似。

File "D:\goods-give\app\web\goods.py", line 8, in <module>
    from app.models.import Gift
  File "D:\goods-give\app\models\gift.py", line 9, in <module>
    from app.models.wish import Wish
  File "D:\goods-give\app\models\wish.py", line 8, in <module>
    from app.models.gift import Gift
ImportError: cannot import name 'Gift'

这确实很头疼,明明有这个文件或模块,就是报错说找不到,这样的错误可能就是循环导入导致的。为什么循环导入会报错呢?首先python的代码是从文件顶部向底部执行(人为改变除外),再次python的导入对于一个文件只会执行一次。那么在文件A的顶部导入了B,又在文件B顶部中导入A。如下,注意是顶部。

from app.models.gift import Gift   #wish文件顶部
from app.models.wish import Wish   #gift文件顶部

当执行到wish文件时,执行到导入这句的时候立即跳转像gift文件,然后开始执行gift中的代码,执行到导入语句时又跳转到wish文件,又开始执行wish中的代码,执行到
from app.models.gift import Gift这句时就报错了,为什么报错,因为同一文件的同一导入只会执行一次。
有人说出现循环导入是设计的问题,应该重写考虑设计,这确实是个不错的方法。但,但,出现了但就往下看,解决方法非常简单,不了解的时候可以困几天。
既然在顶部导入报错,那我们可以换个位置嘛,放底部如何?还行,测试能正常运行起来。但如果在哪里使用就在那里导入不是更好?应该是更好,所以采用后者来解决。注:对于python自带的模块统一在顶部最先导入。

相关文章

  • 浅谈python中的循环导入

    循环导入会报错,报找不到依赖的错误,也就是报找不到模块的错误。如下类似。 这确实很头疼,明明有这个文件或模块,就是...

  • 浅谈 Python 的模块导入

    浅谈 Python 的模块导入 本文不讨论 Python 的导入机制(底层实现细节),仅讨论模块与包,以及导入语句...

  • Python 循环导入的问题

    首先出现这种问题是因为没有规划好层级,哪些模块和哪些模块逻辑上应该在一起,哪些模块是公共的依赖项,哪些是实际的业务...

  • 如何避免Python的循环导入问题

    本文首载于Gevin的博客未经Gevin授权,禁止转载原文链接:如何避免Python的循环导入问题 Python ...

  • 我的python学习笔记-第十天

    循环语句 Python中的循环语句有 for 和 while。 while 循环 Python中while语句的一...

  • 2019-03-25

    Python设置掩码及循环 一、设置掩码 导入getpass库,getpass可将密码设为掩码 二、循环 1、wh...

  • Python import语句导入模块语法

    Python import语句导入模块语法 源文档Python import语句导入模块语法python中的imp...

  • 012.Python循环语句

    Python 循环语句 1. 概述 Python中的循环语句有 for 和 while。 Python循环语句的控...

  • Lesson 021 —— python 循环语句

    Lesson 021 —— python 循环语句 Python中的循环语句有 for 和 while。 循环可以...

  • python 循环语句

    本次将为大家介绍Python循环语句的使用。Python中的循环语句有 for 和 while。Python循环语...

网友评论

      本文标题:浅谈python中的循环导入

      本文链接:https://www.haomeiwen.com/subject/njxxwqtx.html