您好,登錄后才能下訂單哦!
這篇文章主要介紹“python中的requirements.txt文件怎么使用”的相關知識,小編通過實際案例向大家展示操作過程,操作方法簡單快捷,實用性強,希望這篇“python中的requirements.txt文件怎么使用”文章能幫助大家解決問題。
在部署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
如果生成該文件出現的時候出現 warning,建議使用python -m
去執行 pip freeze 命令。
如果你創建 Python 程序,或者安裝模塊時,未使用虛擬環境,那在生成requirements.txt
文件的時候,會將你本地所有的包都進行打包提取,部署前,需要人工進行篩選。
語法格式 在requirements.txt
文件中,可以只寫第三方模塊名稱,不指定版本號,默認安裝最新版本。
如果使用注釋,使用#
加文字內容。
模塊名稱與版本號之間可以使用如下符號:
==
:等于
>
:大于版本
>=
:大于等于
<
:小于版本
<=
:小于等于版本
~=
:兼容版本,使用任何大于或等于指定版本,但不大于當前發行系列的版本,例如~=1.4.3
可以匹配1.4.3
到1.4.9
,但是不能匹配1.5.0
。
在可選范圍內,安裝最新版本,當前最優先的依舊是等于的版本號。
可以使用逗號,
分隔兩個條件,例如下述代碼:
package_name >= 1.0, <=2.0
不需要每個包都使用 pip 進行安裝
不需要確定第三方模塊的版本號
上文提及如果希望 requirements.txt 文件變得精簡,可以使用虛擬環境實現隔離,它將用戶的軟件包和系統的軟件包進行區分,允許我們為每個單獨的程序安裝模塊。
常見的虛擬環境包如下所示:
virtualenv
pipenv
但上述介紹存在潛在的問題是:
requirements.txt
文件只包含一級依賴項及其版本,但如果我們的依賴項自身包含其它依賴項(二級以上),這些模塊的版本不一定被鎖定。
此時就可能會出現一個由于版本不對應的問題,導致程序崩潰。
當然使用下述命令可以解決該問題
pip freeze > requirements.txt
但是使用該命令會產生延伸問題,如果你希望刪除一個模塊,如何判斷其關聯依賴被刪除
在其他編程語言中,會創建2個文件,一個用于定義依賴關系,另一個鎖定所有的次級依賴項及其版本。
解決上述問題,可以使用pip-tools
中的 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文件怎么使用”的內容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業相關的知識,可以關注億速云行業資訊頻道,小編每天都會為大家更新不同的知識點。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。