知識點回顧:
- 導入官方庫的三種手段
- 導入自定義庫/模塊的方式
- 導入庫/模塊的核心邏輯:找到根目錄(python解釋器的目錄和終端的目錄不一致)
作業:自己新建幾個不同路徑文件嘗試下如何導入
python的學習就像是學一點常見的基礎語法,再去針對性地學習處理任務需要用到的庫,庫的導入很簡單:
- 標準導入整個庫,import xxx
- 從庫中導入特定項,from xxx import yyy
- 非標準導入整個庫,from xxx import *(和上面導入庫中特定項一樣,用的時候可以不用加庫的前綴)
------------------------------------------------- 相關概念辨析一下 ------------------------------------------------------
模塊(Module)
- 本質:以 `.py` 結尾的單個文件,包含Python代碼(函數、類、變量等)
- 作用:將代碼拆分到不同文件中,避免代碼冗余,方便復用和維護
包(Package)在python里,包就是庫
- 本質:有層次的文件目錄結構(即文件夾),用于組織多個模塊和子包
- 核心特征:包的根目錄下必須包含一個 `__init__.py` 文件(可以為空),用于標識該目錄是一個包
- ---------------------------------------------------------------------------------------------------------------------------------
-
IDE通常會將你打開的項目文件夾設為“根目錄”(或者說,運行時的工作目錄)。Python 在導入模塊時,會從這個根目錄(以及其他一些標準位置和腳本所在的目錄)開始查找,具體操作中,模塊導入可以按目錄層級分為以下三種類型:
1.同級目錄導入
- 場景:當前腳本和要導入的模塊文件在同一個目錄下
- 方法:直接使用上面提到的三種導入庫的方式
project/
├── main.py ? ? ? ?# 當前腳本
└── utils.py ? ? ? # 要導入的模塊
# main.py 中導入 utils.py
import utils
utils.some_function()# 或使用 from 語法
from utils import some_function
some_function()
2.子目錄導入
- 場景:要導入的模塊位于當前腳本的子目錄中
- 方法:需要將子目錄轉換為 Python 包,再通過包路徑導入
project/
├── main.py
└── subdir/
? ? ├── __init__.py ?# 空文件,標識這是一個包
? ? └── utils.py ?# 子目錄中的模塊
# main.py 中導入子目錄模塊
from subdir import utils
utils.some_function()# 或者只導入相關函數
from subdir.utils import some_function
some_function()
3.跨目錄導入
- 場景:要導入的模塊位于完全不同的目錄層級(如父目錄、兄弟目錄等)
- 方法:需動態修改?
sys.path
?或使用絕對導入(Python 3.3+ 支持命名空間包) -
project/
├── parent_dir/
│ ? └── utils.py
└── child_dir/
? ? └── main.py ?# 需要導入?../parent_dir/utils.py
# main.py 中動態添加父目錄到 Python 路徑
import sys
import os# 獲取父目錄路徑并添加到 sys.path
parent_dir = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
sys.path.append(parent_dir)# 現在可以導入父目錄中的模塊
from parent_dir import utils
utils.some_function()
直接在終端運行python -m child_dir.main也可以將父目錄路徑添加到sys.path
@浙大疏錦行