常会遇到的一个情景是在GitHub上下载了一个repo,在其他地方使用它。
```py
import sys
sys.path.append(绝对路径字符串)
```
Python 相对导入与绝对导入,这两个概念是相对于包内(含有`__init__.py`文件)导入而言的。包内导入即是包内的模块导入包内部的模块。
**相对导入:**
```py
from . import some_class #本包
from ..some_package import some_function #上一层的some_package包
```
**绝对导入:**
```py
from package1 import module1
from package1.module2 import function1
from package2 import class1
from package2.subpackage1.module5 import function2
```
注意:即使在一个包内,也不能直接`import A`,而是要`from . import A`或者`from package_name import A`
例如:
```
thing
├── books
│ ├── adventure.py
│ ├── history.py
│ ├── horror.py
│ ├── __init__.py
│ └── lovestory.py
├── furniture
│ ├── armchair.py
│ ├── bench.py
│ ├── __init__.py
│ ├── screen.py
│ └── stool.py
└── __init__.py
```
那么如果在 stool 中引用 bench,则有如下几种方式:
```py
from . import bench # 此为 relative import
from furniture import bench # 此为 absolute import
```