簡介
Python項目中必須包含一個 requirements.txt 文件,用于記錄所有依賴包及其精確的版本號。以便新環境部署。
主要的寫法如下所示
pip freeze > requirements.txt # 生成requirements.txtpip install -r requirements.txt # 從requirements.txt安裝依賴
支持的寫法
-r base.txt # base.txt下面的所有包pypinyin==0.12.0 # 指定版本(最日常的寫法)django-querycount>=0.5.0 # 大于某個版本django-debug-toolbar>=1.3.1,<=1.3.3 # 版本范圍ipython # 默認(存在不替換,不存在安裝最新版)
第三方工具生成
pip freeze 會附帶上一些不需要的包,以及某些包依賴的包~
pipreqs 自動分析項目中引用的包。對Django項目自動構建的時候忽略了Mysql包,版本也很奇怪;而且聯網搜索的時候遇到404就報錯跳出了😂
pigar 功能同上,會顯示包被項目文件引用的地方(搜索下就能解決的問題啊= =感覺是偽需求),404的問題也存在
pip-tools 通過第三方文件生成requirements.txt,講道理為什么不直接寫呢,要通過第三方包來做一層轉換
推薦用法
一般項目會分為開發環境,測試環境,生產環境等……依賴的包會不同。推薦在文件夾下為每個環境建立一個requirements.txt文件。公有的包存在base.txt供引用
➜ meeting git:(sync) ✗ tree requirements -hrequirements├── [ 286] base.txt├── [ 80] local.txt└── [ 28] production.txt
由于上面提到的工具并不好用~還是推薦手動維護依賴列表。畢竟pip安裝后馬上去編輯下依賴文件也不是什么麻煩事
setup.py 與 requirements.txt 區別
setup.py 這個文件是用來管理模塊的,你可以將你的項目打包為模塊上傳到 pypi 中,也同樣能將項目作為模塊放入python 的系統加載模塊目錄下。
requiremens.txt 這個文件是列舉你這個項目引用了哪些非本項目的依賴的,除此之外,沒有其他作用。
因此,可以看出這兩個項目其實并沒有沖突關系,而且有很大共存的必要。
有這兩種功能都需要的么?
必須有啊,而且還很多,例如 Flask,他就支持兩種方式:
新聞熱點
疑難解答