Skip to content

Commit 873d518

Browse files
committed
新增自定义模块相对路径引入说明
1 parent 669e749 commit 873d518

1 file changed

Lines changed: 13 additions & 0 deletions

File tree

python核心编程日记.md

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -76,3 +76,16 @@ $ sudo subl /etc/rc.local
7676
Python 中的对象之间赋值时是按引用传递的,如果需要拷贝对象,需要使用标准库中的 copy 模块。
7777
1. copy.copy 浅拷贝 只拷贝父对象,不会拷贝对象的内部的子对象。
7878
2. copy.deepcopy 深拷贝 拷贝对象及其子对象。
79+
80+
81+
## 关于自定义模块相对路径引入报错
82+
```
83+
(.env)zhanghe@ThinkPad-X240:~/code/flask_project$ python app/tools/db.py
84+
Traceback (most recent call last):
85+
File "app/tools/db.py", line 13, in <module>
86+
from ..database import db_session
87+
ValueError: Attempted relative import in non-package
88+
```
89+
原因分析: from ..database import db_session 这样的写法是显式相对引用, 这种引用方式只能用于 package 中, 而不能用于主模块中。
90+
因为主 module 的 name 总是为 main , 并没有层次结构, 也就无从谈起相对引用了。
91+
换句话, if __name__=="__main__": 和相对引用是不能并存的。

0 commit comments

Comments
 (0)