首頁 > 軟體

python 中的requirements.txt 檔案的使用詳情

2022-05-17 19:00:59

實戰場景

在部署Python應用時,需要把第三方庫進行安裝,這裡可以使用requirements.txt檔案,其中記錄了所有依賴包以及精確的版本號。

requirements.txt檔案在我們存取開源 Python專案的時候,極常見。

簡單使用流程概述

使用pip freeze命令生成requirements.txt檔案,

如下所示:

pip freeze > requirements.txt

請注意:每包都獨佔一行,然後是版本號。

生成的檔案預設在控制檯執行目錄,也可以自定義目錄,建立檔案的時候增加檔案目錄即可

pip freeze > d:/requirements.txt

其中>表示重定向,即 freeze 輸出的內容送到requirements.txt檔案中。

遷移環境的時候,注意打包該檔案,然後使用如下命令部署

pip install -r requirements.txt

生成 requirements.txt 檔案潛在問題

如果生成該檔案出現的時候出現 warning,建議使用python -m去執行 pip freeze 命令。

如果你建立 Python 程式,或者安裝模組時,未使用虛擬環境,那在生成requirements.txt檔案的時候,會將你本地所有的包都進行打包提取,部署前,需要人工進行篩選。

語法格式 在requirements.txt檔案中,可以只寫第三方模組名稱,不指定版本號,預設安裝最新版本。

如果使用註釋,使用#加文字內容。

模組名稱與版本號之間可以使用如下符號:

  • ==:等於
  • >:大於版本
  • >=:大於等於
  • <:小於版本
  • <=:小於等於版本
  • ~=:相容版本,使用任何大於或等於指定版本,但不大於當前發行系列的版本,例如~=1.4.3可以匹配1.4.31.4.9,但是不能匹配1.5.0 。

在可選範圍內,安裝最新版本,當前最優先的依舊是等於的版本號。

可以使用逗號,分隔兩個條件,例如下述程式碼:

package_name >= 1.0, <=2.0

使用 requirements.txt 檔案的好處

  • 不需要每個包都使用 pip 進行安裝
  • 不需要確定第三方模組的版本號

備註

上文提及如果希望 requirements.txt 檔案變得精簡,可以使用虛擬環境實現隔離,它將使用者的軟體包和系統的軟體包進行區分,允許我們為每個單獨的程式安裝模組。

常見的虛擬環境包如下所示:

  • virtualenv
  • pipenv

但上述介紹存在潛在的問題是:

requirements.txt檔案只包含一級依賴項及其版本,但如果我們的依賴項自身包含其它依賴項(二級以上),這些模組的版本不一定被鎖定。

此時就可能會出現一個由於版本不對應的問題,導致程式崩潰。

當然使用下述命令可以解決該問題

pip freeze > requirements.txt

但是使用該命令會產生延伸問題,如果你希望刪除一個模組,如何判斷其關聯依賴被刪除

在其他程式語言中,會建立2個檔案,一個用於定義依賴關係,另一個鎖定所有的次級依賴項及其版本。

解決上述問題,可以使用pip-tools中的 pip-compile

使用 pip-compile

該功能模組在pip-tools中,所以需要先安裝該工具。

python -m pip install pip-tools -i https://pypi.douban.com/simple/

安裝完畢會在 Python 的 Scripts 資料夾中生成如下 exe 程式。

然後在你需要生成requirements.txt的目錄中建立一個requirements.in檔案,其中可以寫入你需要的模組

requests == 2.27.0

然後執行pip-compile命令,輸出內容如下所示:

requirements.txt 檔案程式碼如下:

#
# This file is autogenerated by pip-compile with python 3.8
# To update, run:
#
#    pip-compile
#
certifi==2021.10.8
    # via requests
charset-normalizer==2.0.12
    # via requests
idna==3.3
    # via requests
requests==2.27.0
    # via -r requirements.in
urllib3==1.26.9
    # via requests

到此這篇關於python 中的requirements.txt 檔案的使用詳情的文章就介紹到這了,更多相關python requirements.txt內容請搜尋it145.com以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援it145.com!


IT145.com E-mail:sddin#qq.com