
requirements.txt介紹
requirements.txt是一個簡單的文字檔,裡面會記錄每個使用到的套件以及版本,其目的和用途有三點:
- 方便管理:
requirements.txt可以明確指定開發項目當中所有需要的的外部Python套件和版本,可以避免因為版本差異導致的相容性問題。 - 方便協作:當新的開發人員加入專案或者在多個環境間部署專案時,可以輕鬆設定有相同Python套件和版本的開發環境。
- 自動化整理:當
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
這樣就完成囉~
可以開始執行專案的程式碼啦!
