如何從 requirements.txt
載入套件並用於 setup.py
在 Python 開發中,套件管理是專案維護的重要一環。當我們使用 setuptools
來建立 Python 套件時,通常會在 setup.py
中指定 install_requires
來管理專案的套件。
然而,當專案的套件數量較多時,直接在 setup.py
內手動列出所有套件可能不太方便。因此,我們可以將套件整理到 requirements.txt
,然後在 setup.py
內動態讀取,確保專案的套件統一且易於維護。
setup.py
是什麼?
setup.py
是 Python 套件的安裝與發佈腳本,負責定義套件名稱、版本、依賴關係,並支援打包與發佈。開發者可以透過 pip install .
安裝專案,或使用 python setup.py sdist bdist_wheel
來打包套件,甚至上傳至 PyPI 讓其他人使用。
讀取 requirements.txt
並加到 setup.py
我們可以使用以下方式,在 setup.py
內讀取 requirements.txt
內容,並將其設為 install_requires
:
from setuptools import setup
# 讀取 requirements.txt
with open('requirements.txt') as fid:
requires = [line.strip() for line in fid]
setup(
name="my_package",
version="0.1",
install_requires=requires,
packages=["my_package"]
)
requirements.txt
內容範例
我們的 requirements.txt
可能會長這樣:
numpy>=1.21.0
pandas==1.3.5
requests
numpy>=1.21.0
表示至少需要 1.21.0 版本的 NumPy。pandas==1.3.5
限制 Pandas 必須是 1.3.5 版本。requests
沒有指定版本,表示安裝最新穩定版本。
為什麼這樣做?
這樣的做法比直接在 setup.py
內手動列出依賴更具優勢,因為:
- 易於維護:可以直接編輯
requirements.txt
,無需修改setup.py
。 - 開發與部署一致:開發者和部署環境可以使用相同的
requirements.txt
來安裝依賴,減少環境不一致的風險。 - 可讀性更好:
requirements.txt
是 Python 社群常用的格式,易於管理和分享。
進階技巧:忽略空行與註解
在實際應用中,我們可能會在 requirements.txt
內加入註解或空行,例如:
# 核心依賴
numpy>=1.21.0
pandas==1.3.5
# 網路請求
requests
這時候,可以在 setup.py
內過濾掉註解與空行:
with open('requirements.txt') as fid:
requires = [line.strip() for line in fid if line.strip() and not line.startswith("#")]
這樣,我們就能確保 install_requires
只包含有效的套件名稱,避免錯誤。
總結
透過 requirements.txt
來管理 install_requires
,我們可以提升 Python 專案的可維護性與一致性,讓開發、部署更加順暢。
同時,setup.py
作為 Python 套件的安裝腳本,能夠幫助我們輕鬆打包與發佈專案。如果你的專案還沒有這樣做,不妨試試看,讓專案管理更加高效! 🚀
留言
張貼留言