-
Notifications
You must be signed in to change notification settings - Fork 0
CPython import
WinChua edited this page May 25, 2020
·
1 revision
a. 支持了隐式的pkg namespace import.
b. import foo 的搜索顺序:
b.1 <directory>/foo/__init__.py 如果能够被搜索到的话, foo作为一个regular package被返回
b.2 <directory>/foo.py 如果能够被搜索到的话, foo作为一个module被返回
b.3 <directory>/foo 被找到的话, 记录下这个被找到的路径, 继续搜索
b.4 最后搜索完之后, 如果没有package, module被返回, 同时b.3中存在某个路径被记录, 将会创建一个namespace package,
c. 这个namespace package将会具有以下的属性: __path__(用于记录子pkg的搜索路径), 不会有__file__
三种module在属性上的区别
| path | file | |
|---|---|---|
| package | ['/root/test/pkg/foo'] | init.py |
| namespace pkg | _NamespacePath(['/root/test/pkg/bar']) | None |
| module | Attribute Error | filename |