Python requirements.txt 是什麼?5 種自動產生與管理方法(資料分析新手必看)

想學 Python 資料分析卻卡在環境安裝?本文推薦 5 款實用的程式工具,教你如何自動生成 requirements.txt,解決套件版本不相容問題。從 pip freeze 到 pipreqs,助你快速建立乾淨、標準的開發環境,新手也能輕鬆上手!

產生 Python 套件清單(requirements.txt)的主流程式工具包括:

  1. pip freeze(適合全環境備份)
  2. pipreqs(精準掃描專案內實際套件)
  3. conda(適用於 資料分析 虛擬環境)
  4. pip-tools(進階版本管理)
  5. 自定義腳本。

如果你是資料分析新手,會建議優先使用 pipreqs 以確保檔案精簡。

requirements.txt介紹

requirements.txt是一個簡單的文字檔,裡面會記錄每個使用到的套件以及版本,其目的和用途有三點:

  1. 方便管理requirements.txt可以明確指定開發項目當中所有需要的的外部Python套件和版本,可以避免因為版本差異導致的相容性問題。
  2. 方便協作:當新的開發人員加入專案或者在多個環境間部署專案時,可以輕鬆設定有相同Python套件和版本的開發環境。
  3. 自動化整理:當requirements.txt被儲存下來後,就可以使用自動化工具來安裝在本地端的環境當中。

自動儲存requirements.txt的5種方法

1. freeze

使用 pip freeze,可以快速將當前 Python 環境中所有安裝的套件和其版本輸出到requirements.txt中,缺點是會將整個環境下的套件都記錄下來。

pip freeze > requirements.txt

2. pipreqs

它不僅基於當前環境,而是根據您的項目文件夾中實際使用的導入來生成 requirements.txt 文件。這有助於避免將未在項目中使用的包加入到 requirements.txt 中。

首先安裝pipreqs

pip install pipreqs

接著進入到你的開發專案跟目錄底下(Prompt),並將當前工作目錄移動到上一級目錄,也就是進入到’C:\User\user’目錄下方

cd C:\User\user\Projects
cd ..

最後執行pipreqs,搜尋Projects目錄下所有的套件和版本,並儲存到目錄下方

pipreqs Projects\

成功儲存應該會顯示以下

INFO: Successfully saved requirements file in Projects\requirements

3. conda

使用conda直接管理Python環境,就是打開Anaconda Prompt(anaconda3),可以將當前環境的所有套件存到requirements.txt

conda list --export > requirements.txt

或是希望儲存成一個conda 的標準環境,導出一個 .yml 文件,可以用下面的程式碼儲存出來

conda env export > environment.yml

4. pip-tools

pip-tools 是管理命令字元的工具,其中的 pip-compile 命令可以存出一個精確、按照字母排序的 requirements.txt 文件,一樣要先安裝(pip)才可以執行唷!

pip install pip-tools
pip-compile

5. 自己寫一個小程式儲存requirements.txt

我們只要把想儲存套件版本的python檔案寫在save_package_versions(”)的括弧裡面,就能夠直接紀錄下當前環境當中有使用到的套件版本,程式碼放在我的colab

import pkg_resources

def get_imports(filepath):
    imports = set()
    with open(filepath, 'r', encoding='utf-8') as file:
        lines = file.readlines()
        for line in lines:
            line = line.strip()
            if line.startswith('import') or line.startswith('from'):
                parts = line.split()
                if parts[0] == 'import':
                    imports.add(parts[1].split('.')[0])
                elif parts[0] == 'from':
                    imports.add(parts[1].split('.')[0])
    return imports

def save_package_versions(filepath):
    imports = get_imports(filepath)
    installed_packages = {pkg.key: pkg.version for pkg in pkg_resources.working_set}
    with open("requirements.txt", "w") as f:
        for imp in imports:
            if imp in installed_packages:
                f.write(f"{imp}=={installed_packages[imp]}\n")
            else:
                f.write(f"{imp}: Package not found or no version available\n")

# 儲存requirements.txt範例
save_package_versions('test.py')

安裝requirements.txt

學會了種不同方法來存儲requirements.txt,接下來要學如何正確載入requirements.txt到我們的環境當中,很簡單的方式就是用pip方法直接安裝到一個新的的環境當中

pip install -r requirements.txt

這樣就完成囉~

可以開始執行專案的程式碼啦!

requirements.txt常見問題

Q1: 什麼是 requirements.txt?為什麼資料分析專案需要它?

A: requirements.txt 是一個紀錄 Python 專案所需所有套件及其版本的文字檔。在資料分析中,不同的套件(如 Pandas 或 Scikit-learn)版本差異可能導致計算結果不同或程式報錯,透過此檔案可確保每個人都在相同的環境下執行。

Q2: 初學者最推薦哪一個產生 requirements.txt 的程式工具

A: 推薦使用 pipreqs

因為它只會記錄你專案中「真正用到」的套件,比 pip freeze 更乾淨,能有效避免安裝不必要的多餘套件。

Q3: 如何使用 requirements.txt 快速安裝所有套件?

A: 只要在終端機輸入 `pip install -r requirements.txt`,系統就會自動下載並安裝清單中指定的所有版本。

Q4: 資料分析常用的 Anaconda 環境也可以產出 requirements.txt 嗎?

A: 可以。

使用命令 `conda list –export > requirements.txt` 即可。若要給其他 conda 使用者,建議匯出成 .yml 格式。

Q4: 為什麼建議在虛擬環境中使用這些程式工具

A: 為了避免不同專案間的套件版本衝突。

在獨立的虛擬環境中操作,能確保 requirements.txt 內容精確,不會混入其他專案的雜訊。

送給初學者的選項路徑:我該選哪種工具?


情境 A: 我只是想快速備份整個電腦的 Python 內容 → 用 `pip freeze`
情境 B: 我寫完了一個專案,要上傳 GitHub 給別人看 → 用 `pipreqs`
情境 C: 我是用 Anaconda 進行資料分析的學生 → 用 `conda` 導出
情境 D: 我已經是進階開發者,需要嚴格控管版本依賴 → 用 `pip-tools`

想要直接開始進行 requirements 建立嗎?

現在就打開我提供給你的「 Colab 連結 」,內含常用的 requirements.txt 範本與虛擬環境建立指令稿,讓你專注在資料分析專案上,不再為環境設定煩惱!

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *