常會遇到的一個情景是在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
```