python3包导入机制
导言
在今天的编程中,有关于包导入出错的情况再次出现,所以我决定写个blog来理清自己的思路,有些事情不仅要记下来,还要说出去,这样,有助于自己记忆力和逻辑的通顺。实例分析
1. Main与Module同级目录
package
|
+--a.py
| |
| +--class Module
|
+--Main.py
我的做法
from package.a import Module from .a import Module "是错误的"
2.Main于Module上级目录
+--Mian.py
|
+--package
|
+--a.py
|
+--class Module
我的做法
from package.a import Module from /.package.a import Module from .package.a import Module"是错误的"
3.Main 于 Module 下级目录
+--package
| |
| +--Main.py
|
+--a.py
|
+--class Module
我的做法
from app.a import Module from ..a import Module "在某种情况下是对的,但是单看Main在此类情况下是错的"
4.Main 与 Module 处于不同的package
/app
|
+--package1
| |
| +--Main.py
|
+--package2
|
+--a.py
|
+--class Module
我的做法
from app.package2.a import Module
5.万能法介绍
/app | | | +--package1 | | | | | +--Main.py | | | +--a.py | | | +--class Module | +--manage.py
我的做法:
"在manager中" from app.package.a import Module "在这种情况下,main.py中导入a 可以使用from ..a import Module" "如果真的无法判断如何导入的情况下,从Module和Main的父目录导入总是没错的" from a_parent.a && main_parent.a_parent.a import Module
总结:
- 我还是没有介绍相对导入和绝对导入,自己谈的东西,还是很浅薄的一层,只是现在够用而已。
- 事无小事,平常如果就有注意到细节的话,这写东西在用到的时候就不会耽误自己那么久的时间去寻找答案。