python導出項目下依賴包
一、如果需要導出 當前環境 所有依賴庫,則使用這條命令即可
pip freeze > requirements.txt
(一般用於虛擬環境導出,對項目而已多數存在冗餘依賴庫)
二、如果需要導出 當前項目 所有依賴包,則需要用到 pipreqs
2-1、安裝依賴包
pip install pipreqs
(注意:要在管理員權限下安裝,否則容易出現無法啓用的情況)
2-2、導出requirements.txt文件(要花很長時間)
通用語句
pipreqs . --encoding=utf-8 --force
也可以自定義多種參數
pipreqs ./ --ignore ./pipeflow --pypi-server https://pypi.tuna.tsinghua.edu.cn/simple/ --encoding utf-8
如圖提示Successfully saved requirements file in ./requirements.txt 則成功
requirements.txt效果圖
Flask==2.2.2
pika==1.2.0
requests==2.27.1
SQLAlchemy==1.4.35
2-3、命令選參
其中pipreqs後面各跟命令含義如下
1、pipreqs後面 直接跟 “目標路徑” 【必填】
在當前項目目錄則用 .
也可以用絕對路徑,注意絕對路徑有空格要用""包起來
2、--savepath <string> 結果保存文件 【沒必要設置】
默認當前目錄下requirements.txt
3、--encoding <string> 編碼方式 【建議設置】
默認自動,建議使用 utf-8 保證文件解碼正確
4、--force 強制的
默認否。若設置此項,當結果文件存在時直接覆蓋。
5、--proxy <string> 代理 【不建議設置】
默認不用代理。建議通過--pypi-server指定鏡像,就沒必要用不穩定的代理了。
6、--pypi-server <string> 指定pip鏡像源 【國內建議設置】
默認https://pypi.python.org/pypi/ ,在外網還挺快,在國內還是建議指定 https://pypi.tuna.tsinghua.edu.cn/simple/ 提高檢索速度。
當然也可以指定自己喜歡的“pip鏡像源”
7、--mod <compat | gt | no-pin> 輸出模式
默認 全等模式,例如 requests==2.27.1
compat 比較近似於,例如 requests~=2.27.1
gt 最低要求,例如 requests>=2.27.1
no-pin 無限制, 例如 requests
8、--ignore 忽略的路徑(用 , 分割多個路徑)
當一個git項目包含子git項目時建議設置此項。
9、--use-local 僅使用本地包【不建議設置】
10、--print 打印結果【沒必要設置】
默認不展示,直接打開結果文件結果看即可。若設置此項則允許在命令行預覽
————————————————(如果沒有異常,就不需要往下看了)————————————————————————————
異常處理
一、有些用戶會出現 'gbk' codec can't decode byte 的異常
(圖片轉自其他同事出現的問題)
①首先建議是升級pipreqs。舊版會有無法指定編碼格式的情況,新版不會有。當前博主版本是 pipreqs==0.4.11
pipreqs依賴庫少,一般不影響正式環境,可以放心升級。(升級後需要關閉窗口再重新執行pipreqs命令)
②(如果①完還是有這異常,)則改代碼
找到pipreqs.py文件。一般在 Python39\Lib\site-packages\pipreqs 下,根據實際安裝方式定位。
如果你不是用管理員安裝的,則可能在 C:\Users\[當前用戶名]\AppData\Roaming\Python\Python39\site-packages\pipreqs 下。
把114行的 open(file_name, "r", encoding=encoding) 改爲 open(file_name, "r", encoding="utf-8")
把205行的 open(item, "r", encoding=encoding) 改爲 open(item, "r", encoding="utf-8")
(不同版本可能有差異,但就是找這兩句話就對了)改完重新運行即可
二、有些倉庫會出現 red('!!!MUST SET MODULE in the fabfile.py')
這是因爲 有import依賴包在pip鏡像庫或本地無法被定位。
首先,要檢測自己代碼是否存在import錯誤了。pipreqs檢查的"項目下所有py文件"!而python是"先跑,跑到異常再說"。
然後,檢測鏡像庫,看下是否缺失對應依賴包。一般這異常出現在 跨平臺 的項目中。可以用--ignore排除跨平臺調用的文件。
例如我的 pipreqs ./ --ignore ./pipeflow
轉載請註明出處: https://my.oschina.net/jacky326/blog/6345424