![](https://i-blog.csdnimg.cn/blog_migrate/8f900a89c6347c561fdf2122f13be562.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/961ddebeb323a10fe0623af514929fc1.gif)
print(x) from m2 import x y = 20
![](https://i-blog.csdnimg.cn/blog_migrate/8f900a89c6347c561fdf2122f13be562.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/961ddebeb323a10fe0623af514929fc1.gif)
print(y) from m1 import y x = 1
如果运行m1.py,则会产生`ImportError: cannot import name 'y`
如果运行m2.py,则会产生`ImportError: cannot import name 'x`
所以根本原因是:在导入的时候,m1需要访问m2的变量y,但是y没有初始化完成
所以解决方法有两个:
![](https://i-blog.csdnimg.cn/blog_migrate/8f900a89c6347c561fdf2122f13be562.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/961ddebeb323a10fe0623af514929fc1.gif)
1 print(x) 2 3 def func1(): 4 from m2 import x 5 print(x) 6 7 y =20
![](https://i-blog.csdnimg.cn/blog_migrate/8f900a89c6347c561fdf2122f13be562.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/961ddebeb323a10fe0623af514929fc1.gif)
1 print(y) 2 3 def func1(): 4 from m1 import y 5 print(y) 6 7 x = 1
![](https://i-blog.csdnimg.cn/blog_migrate/8f900a89c6347c561fdf2122f13be562.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/961ddebeb323a10fe0623af514929fc1.gif)
1 print(x) 2 3 y = 20 4 from m2 import x
![](https://i-blog.csdnimg.cn/blog_migrate/8f900a89c6347c561fdf2122f13be562.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/961ddebeb323a10fe0623af514929fc1.gif)
1 print(y) 2 3 x = 1 4 from m1 import y
模块的路径搜索
一、模块的的搜索路径顺序
- 先从内存中已经导入的模块中寻找
- 内置的模块
- 自定制的函数中找
- 环境变量sys.path中找
主要记住未来项目的执行文件一定要弄一个环境变量