第九章、模块的循环导入问题及模块的路径搜索

第九章、模块的循环导入问题及模块的路径搜索

一、模块的循环导入问题

1. 什么是循环导入

两个模块互相导入,形成导入循环

#m1.py
print(x)
from m2 import x
y = 20
m2.py
print(y)
from m1 import y
x = 1

2. 问题

如果运行m1.py,则会产生ImportError: cannot import name 'y

如果运行m2.py,则会产生ImportError: cannot import name 'x

3.解决方案

  1. 方案一:导入模块语句放在函数里,只要函数调用就可以运行执行导入

    #m1.py
    print(x)
     
    def func1():
        from m2 import x
        print(x)
     
     y =20
    
    #m2.py
    print(y)
     
    def func1():
    	from m1 import y
         print(y)
     
     x = 1
    

2.方案二:导入之前定义变量,m1找到m2文件中的x后回到m1运行打印x,继续执行下面的代码

#m1.py
1 print(x)
2 
3 y = 20
4 from m2 import x
#m2.py
1 print(y)
2 
3  x = 1
4  from m1 import y

二、模块的路径搜索

一、模块的搜索路径顺序

内存--》内置--》自定义模块--》环境变量sys.path

要记住未来项目的执行文件一定要弄一个环境变量

posted @   得淼  阅读(125)  评论(0编辑  收藏  举报
编辑推荐:
· 深入理解 Mybatis 分库分表执行原理
· 如何打造一个高并发系统?
· .NET Core GC压缩(compact_phase)底层原理浅谈
· 现代计算机视觉入门之:什么是图片特征编码
· .NET 9 new features-C#13新的锁类型和语义
阅读排行:
· Spring AI + Ollama 实现 deepseek-r1 的API服务和调用
· 《HelloGitHub》第 106 期
· 数据库服务器 SQL Server 版本升级公告
· 深入理解Mybatis分库分表执行原理
· 使用 Dify + LLM 构建精确任务处理应用
点击右上角即可分享
微信分享提示