Python只導出項目依賴包

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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章