Vibe Coder

套件與環境:為什麼別人電腦可以跑,我的不行

套件是別人寫好的程式碼集合,Python 用 pip 安裝、JavaScript 用 npm 安裝。虛擬環境讓每個專案有自己獨立的套件空間,避免版本互相衝突;requirements.txt 和 package.json 則記錄套件版本,讓別人一行指令就能重現你的環境。
套件與環境:為什麼別人電腦可以跑,我的不行

套件與環境:為什麼別人電腦可以跑,我的不行

AI 生的程式幾乎都有相依套件:看到第一行 import requestsfrom openai import,就代表要先安裝套件,不裝就跑不起來。環境不對什麼都白費:程式碼完全一樣,但套件版本不同就可能出錯,虛擬環境讓每個專案有自己的乾淨空間,互不干擾。

你將學到什麼

套件是什麼

別人寫好的程式碼集合,看到 ModuleNotFoundError 知道怎麼解決。

pip 與 npm 差在哪

Python 和 JavaScript 兩套套件管理工具的對照。

虛擬環境為什麼重要

每個專案獨立的套件空間,版本不互相干擾。

記錄環境

requirements.txt 和 package.json,讓環境可以重現。

為什麼 Vibe Coder 需要懂套件管理

原因說明
AI 生的程式幾乎都有相依套件看到第一行 import requests 或 from openai import,就代表要先安裝套件,不裝就跑不起來。
環境不對什麼都白費程式碼完全一樣,但套件版本不同就可能出錯,虛擬環境讓每個專案有自己的乾淨空間。
讓別人能重現你的環境requirements.txt 記錄所有套件版本,別人執行一行指令就能完整重現你的環境。
版本衝突是常見卡關套件 A 需要 numpy 1.x,套件 B 需要 numpy 2.x,兩個裝在一起就爆,虛擬環境能隔離這個問題。

套件是什麼

套件(Package)是別人寫好的程式碼集合,讓你不用從零開始做每一件事。想發 HTTP 請求,不用自己實作 TCP 連線,安裝 requests 套件就好;想用 AI API,安裝 openaianthropic 套件就好。套件由套件管理工具負責安裝、更新、移除:Python 用 pip,JavaScript 用 npm(或 yarn、pnpm)。

pip 與 npm 的差異

項目pip(Python)npm(JavaScript / Node.js)
安裝套件pip install 套件名npm install 套件名
移除套件pip uninstall 套件名npm uninstall 套件名
查看已安裝pip listnpm list
依清單安裝pip install -r requirements.txtnpm install(讀 package.json)
套件存在哪虛擬環境的 site-packages/專案的 node_modules/ 資料夾
套件清單檔requirements.txtpackage.json

虛擬環境為什麼重要

如果不用虛擬環境,所有套件都裝在「系統全域」,問題是:專案 A 需要 flask==2.3,專案 B 需要 flask==3.0,兩個無法共存;你幫別人修電腦時裝了奇怪的套件,會影響你自己所有的專案;部署到雲端時,不知道該裝哪些套件、裝哪個版本。虛擬環境讓每個專案有自己的獨立套件空間,互不影響。

# 在專案資料夾裡建立虛擬環境
python3 -m venv .venv

# 啟動(Mac / Linux)
source .venv/bin/activate

# 啟動(Windows PowerShell)
.venv\Scripts\activate

# 確認啟動:終端機前方出現 (.venv)
# 啟動後安裝的套件只影響這個專案
專案 A 的 .venvflask==2.3專案 B 的 .venvflask==3.0互不影響,各自獨立
虛擬環境把每個專案隔開,同一個套件裝不同版本也不會打架。

requirements.txt 與 package.json

這兩個檔案是「環境的說明書」,記錄這個專案需要哪些套件和版本。有了這個檔案,任何人都能一行指令重現你的環境。

Python:requirements.txt

# 把目前虛擬環境的所有套件輸出成清單
pip freeze > requirements.txt

# 別人拿到你的專案,一行指令安裝全部
pip install -r requirements.txt

JavaScript:package.json

# 初始化新的 Node.js 專案(產生 package.json)
npm init -y

# 安裝套件並自動記錄到 package.json
npm install express

# 別人拿到你的專案,一行指令安裝全部
npm install
node_modules 絕對不要 commitnode_modules 資料夾可能有幾萬個檔案、幾百 MB,不要放進 Git,.gitignore 裡加上 node_modules/,別人用 npm install 自己裝就好。

版本衝突怎麼解

  1. 先看錯誤訊息:通常會說「requires X version Y, but you have Z」,找到衝突的套件名稱。
  2. 建一個全新的虛擬環境:python3 -m venv .venv_new,從乾淨的狀態開始裝。
  3. 貼錯誤訊息給 AI:告訴 AI「我安裝這些套件時出現這個衝突,請幫我找到相容的版本組合」。

延伸學習

把這篇文章分享給需要的人FacebookLINEThreadsX

常見問答

看到 ModuleNotFoundError 該怎麼辦?
先確認虛擬環境有沒有啟動(終端機前方應該出現 (.venv) 字樣),確認後再用 pip install 套件名 安裝缺少的套件。
為什麼一定要用虛擬環境,不能直接裝在系統全域嗎?
可以,但問題是不同專案可能需要同一個套件的不同版本,例如專案 A 要 flask 2.3、專案 B 要 flask 3.0,裝在系統全域會互相衝突。虛擬環境讓每個專案有自己獨立的空間。
requirements.txt 要怎麼產生?
在啟動虛擬環境的狀態下執行 pip freeze > requirements.txt,會把目前裝的所有套件和版本輸出成清單,別人拿到專案後執行 pip install -r requirements.txt 就能一行指令重現環境。
node_modules 可以直接 commit 到 Git 嗎?
不建議。node_modules 資料夾可能有幾萬個檔案、幾百 MB,應該加進 .gitignore,別人拿到專案自己執行 npm install 就能重新安裝。