最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Python中Pipreqs自動生成項(xiàng)目依賴清單的實(shí)現(xiàn)

 更新時間:2026年04月27日 09:23:19   作者:冷炫風(fēng)刃  
本文主要介紹了Python中Pipreqs自動生成項(xiàng)目依賴清單的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧

pipreqs更靠譜因其僅掃描源碼中實(shí)際import的包,避免混入未使用的全局包;而pip freeze導(dǎo)出全部已安裝包,易導(dǎo)致部署失敗或CI沖突。

pipreqs 生成 requirements.txt 為什么比 pip freeze 更靠譜

因?yàn)?nbsp;pipreqs 只掃描項(xiàng)目源碼中實(shí)際 import 的包,不會把全局環(huán)境里裝了但沒用到的包也塞進(jìn) requirements.txt。而 pip freeze 是照單全收當(dāng)前環(huán)境所有已安裝包,尤其在虛擬環(huán)境管理不嚴(yán)時,容易混入開發(fā)依賴、臨時調(diào)試工具甚至系統(tǒng)級包。

常見錯誤現(xiàn)象:pip freeze > requirements.txt 導(dǎo)出后部署失敗,報錯說某個包根本沒被項(xiàng)目引用;或者 CI 流水線因多余依賴沖突卡住。

  • 適用場景:新項(xiàng)目初始化、交接給他人、準(zhǔn)備 Docker 構(gòu)建、提交前自查依賴
  • 不適用場景:想導(dǎo)出包括 pytest、black 這類純開發(fā)依賴——pipreqs 默認(rèn)忽略它們(需額外參數(shù))
  • 注意:它不解析 setup.py 或 pyproject.toml,只看 Python 源文件里的 import 語句

安裝和基礎(chǔ)命令怎么跑起來

先確保沒和舊版 pipreqs 沖突(老版本有路徑 bug):

pip install --upgrade pipreqs

進(jìn)到項(xiàng)目根目錄(含 src/ 或 app.py 等源碼的那層),執(zhí)行:

pipreqs ./

它會自動掃描所有 .py 文件,生成 requirements.txt。如果提示 FileNotFoundError: No such file or directory: 'requirements.txt',說明文件已存在且被鎖——刪掉再試,或加 --force。

  • --encoding=utf-8:遇到中文注釋或路徑時報 UnicodeDecodeError 時必加
  • --diff requirements.txt:對比現(xiàn)有文件,只輸出新增依賴(適合增量更新)
  • --savepath ./reqs-dev.txt:指定輸出路徑,避免覆蓋主文件

怎么讓 pipreqs 掃描子目錄和識別動態(tài)導(dǎo)入

默認(rèn)情況下,pipreqs 只掃當(dāng)前目錄及直接子目錄,遇到 src/mylib/ 或 apps/api/ 這類結(jié)構(gòu)會漏掉。必須顯式指定路徑:

pipreqs ./src ./apps --force

但它無法識別字符串拼接式導(dǎo)入(如 __import__(f"{name}_plugin"))或 importlib.import_module() 動態(tài)加載——這類依賴得手動補(bǔ)進(jìn) requirements.txt。

  • 常見坑:Django 項(xiàng)目里 INSTALLED_APPS 列表中的第三方 app(如 'django-crispy-forms')不會被自動識別,必須人工核對添加
  • 若用 setuptools 的 entry_points 或插件機(jī)制,pipreqs 也無能為力
  • 建議搭配 grep -r "import\|from.*import" . --include="*.py" 快速掃一遍可疑模塊名

生成結(jié)果不準(zhǔn)?先檢查 import 語句寫法

pipreqs 解析的是字面量 import,不是運(yùn)行時行為。所以這些寫法會導(dǎo)致漏依賴:

  • import requests as req → 能識別 requests
  • import mypkg.utils → 只認(rèn) mypkg,不會深挖 utils 依賴的其他包
  • from . import config 或 from ..models import User → 相對導(dǎo)入只影響模塊查找,不引入新第三方包,沒問題
  • try: import ujson except ImportError: import json → ujson 會被識別,即使實(shí)際運(yùn)行走的是 json

真正容易被忽略的是條件導(dǎo)入 + 第三方包組合,比如 if sys.version_info >= (3, 9): from importlib import resources else: import importlib_resources as resources——pipreqs 會把兩個都列進(jìn)去,你得自己刪掉不生效的那個。

到此這篇關(guān)于Python中Pipreqs自動生成項(xiàng)目依賴清單的實(shí)現(xiàn)的文章就介紹到這了,更多相關(guān)Python Pipreqs自動生成依賴清單內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • python實(shí)現(xiàn)機(jī)器人卡牌

    python實(shí)現(xiàn)機(jī)器人卡牌

    這篇文章主要為大家詳細(xì)介紹了python實(shí)現(xiàn)機(jī)器人卡牌,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-10-10
  • Python導(dǎo)出依賴的五種方法

    Python導(dǎo)出依賴的五種方法

    本文主要介紹了Python導(dǎo)出依賴的五種方法,包括使用pip freeze、pipreqs、poetry、pip-tools和conda,具有一定的參考價值,感興趣的可以了解一下
    2025-03-03
  • Python中kivy庫的使用教程詳解

    Python中kivy庫的使用教程詳解

    Kivy是一個開源Python框架,用于構(gòu)建具有創(chuàng)意和多點(diǎn)觸控功能的用戶界面(UI)應(yīng)用程序,本文主要為大家介紹了一下Kivy的具體使用,需要的可以參考下
    2024-01-01
  • 在python里面運(yùn)用多繼承方法詳解

    在python里面運(yùn)用多繼承方法詳解

    在本篇文章中小編給各位分享的是關(guān)于在python里面運(yùn)用多繼承方法以及知識點(diǎn)總結(jié),有興趣的朋友們可以學(xué)習(xí)下。
    2019-07-07
  • Flask中sqlalchemy模塊的實(shí)例用法

    Flask中sqlalchemy模塊的實(shí)例用法

    在本篇文章里小編給大家整理了關(guān)于Flask中sqlalchemy模塊的實(shí)例用法,需要的朋友們可以學(xué)習(xí)下。
    2020-08-08
  • Tensorflow、Keras與Python版本兼容性完全解析

    Tensorflow、Keras與Python版本兼容性完全解析

    在深度學(xué)習(xí)的開發(fā)過程中,TensorFlow和Keras作為最流行的深度學(xué)習(xí)框架,已經(jīng)成為了眾多開發(fā)者和研究人員的首選,這篇文章主要介紹了Tensorflow、Keras與Python版本兼容性的相關(guān)資料,需要的朋友可以參考下
    2025-11-11
  • php使用遞歸與迭代實(shí)現(xiàn)快速排序示例

    php使用遞歸與迭代實(shí)現(xiàn)快速排序示例

    這篇文章主要介紹了php使用遞歸與迭代實(shí)現(xiàn)快速排序的示例,大家參考使用吧
    2014-01-01
  • Python2和3字符編碼的區(qū)別知識點(diǎn)整理

    Python2和3字符編碼的區(qū)別知識點(diǎn)整理

    在本篇文章中小編給各位分享的是關(guān)于Python2和3字符編碼的區(qū)別知識點(diǎn),有需要的朋友們可以學(xué)習(xí)下。
    2019-08-08
  • 簡單談?wù)凱ython的pycurl模塊

    簡單談?wù)凱ython的pycurl模塊

    PycURl是一個C語言寫的libcurl的python綁定庫。libcurl 是一個自由的,并且容易使用的用在客戶端的 URL 傳輸庫。它的功能很強(qiáng)大,PycURL 是一個非??焖伲▍⒖级嗖l(fā)操作)和豐富完整特性的,但是有點(diǎn)復(fù)雜的接口。
    2018-04-04
  • 用Python解決計(jì)數(shù)原理問題的方法

    用Python解決計(jì)數(shù)原理問題的方法

    計(jì)數(shù)原理是數(shù)學(xué)中的重要研究對象之一,分類加法計(jì)數(shù)原理、分步乘法計(jì)數(shù)原理是解決計(jì)數(shù)問題的最基本、最重要的方法,也稱為基本計(jì)數(shù)原理,它們?yōu)榻鉀Q很多實(shí)際問題提供了思想和工具。本文教大家怎么用Python解決在數(shù)學(xué)中遇到的計(jì)數(shù)原理問題。
    2016-08-08

最新評論

游戏| 馆陶县| 达拉特旗| 北安市| 大埔区| 额济纳旗| 饶平县| 扎兰屯市| 视频| 额济纳旗| 平乐县| 蒲江县| 上思县| 观塘区| 福海县| 金阳县| 出国| 瑞昌市| 阿拉尔市| 玉树县| 荣成市| 南平市| 礼泉县| 奉化市| 大英县| 阿城市| 秀山| 牡丹江市| 阳原县| 沭阳县| 丹江口市| 五原县| 雷波县| 浦北县| 电白县| 博湖县| 涿州市| 锡林浩特市| 岱山县| 普兰县| 金阳县|