相依套件(Dependency)
又稱:依賴 · 依賴套件 · dependencies · lockfile · 鎖定檔 · 版本衝突
你的程式要能動,就必須先有別人寫的程式在。那些「必須先有的」就是相依套件。
你會在什麼時候遇到它
AI 工具的安裝失敗,大半是相依套件問題:少了一個、版本不對、兩個套件各自要求互相打架的版本。不認得「dependency」這個詞,你會一直以為是自己指令下錯,但真正要修的是那張清單。
打個比方
像一道菜的材料清單。食譜本身不是菜,少任何一樣就端不出來;而每樣材料又各有自己的來源與規格 —— 相依套件的麻煩在於清單會一層一層往下長。
最小範例
你直接宣告的: openai
openai 自己需要的: httpx、pydantic、anyio…
pydantic 又需要: annotated-types、pydantic-core…
──────────────────────────────────────────────
你只寫了一行,pip 實際裝了十幾個套件
宣告清單 requirements.txt(npm 那邊是 package.json)
鎖定檔 package-lock.json(npm)—— 記下每個套件「確切裝到哪一版」重點是「你只宣告了一層,實際裝了很多層」。所以出錯時,問題套件常常根本不是你親手裝的那個。鎖定檔的用途,是讓下次、以及別人的機器,裝回完全相同的版本組合。
最常搞錯的地方
- 以為「裝最新版一定最好」。AI 生態系的套件常常指定版本範圍,一個太新的相依套件就能讓整條鏈失敗。照著說明文件鎖版本不是保守,是必要。
- 把鎖定檔當成多餘檔案刪掉,或加進 .gitignore。它是「這一組版本確定能動」的紀錄;刪掉之後每個人裝到的都不一樣,除錯就變成猜謎。