0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

pipdeptree:清理依賴的大型項(xiàng)目工具

科技綠洲 ? 來源:Python實(shí)用寶典 ? 作者:Python實(shí)用寶典 ? 2023-10-31 11:14 ? 次閱讀

你可能時(shí)常會(huì)遇到由于包的版本不匹配導(dǎo)致代碼報(bào)錯(cuò)的問題,由于 pip freeze 將所有依賴項(xiàng)顯示為二維列表,這時(shí)候如果想找到這個(gè)錯(cuò)誤版本的包是比較麻煩的事情。這時(shí)候,有個(gè)工具你必須得知道,它就是 pipdeptree .

pipdeptree 是一個(gè)命令行實(shí)用程序,它能用于以依賴關(guān)系樹可視化的形式顯示已安裝的python包。

它適用于全局安裝在計(jì)算機(jī)上的各個(gè)模塊,也適用于Virtualenv等虛擬環(huán)境中的模塊。

1.安裝

你只需要在你的環(huán)境中輸入以下命令就能安裝 pipdeptree:

pip install pipdeptree

已通過測(cè)試的Python版本:2.7,3.5,3.6,3.7,3.8,3.9.

2.用法和示例

pip freeze 和 pipdeptree 最大的區(qū)別如下:

# pip freeze 的顯示
$ pip freeze
Flask==0.10.1
itsdangerous==0.24
Jinja2==2.11.2
-e git+git@github.com:naiquevin/lookupy.git@cdbe30c160e1c29802df75e145ea4ad903c05386#egg=Lookupy
MarkupSafe==0.22
pipdeptree @ file:///private/tmp/pipdeptree-2.0.0b1-py3-none-any.whl
Werkzeug==0.11.2

可見,pip freeze 最多只能顯示一個(gè)依賴的列表,而在 pipdeptree ,每個(gè)模塊的依賴關(guān)系能夠非常直觀地展示出來:

$ pipdeptree
Warning!!! Possibly conflicting dependencies found:
* Jinja2==2.11.2
 - MarkupSafe [required:  >=0.23, installed: 0.22]
------------------------------------------------------------------------
Flask==0.10.1
  - itsdangerous [required:  >=0.21, installed: 0.24]
  - Jinja2 [required:  >=2.4, installed: 2.11.2]
    - MarkupSafe [required:  >=0.23, installed: 0.22]
  - Werkzeug [required:  >=0.7, installed: 0.11.2]
Lookupy==0.1
pipdeptree==2.0.0b1
  - pip [required:  >=6.0.0, installed: 20.1.1]
setuptools==47.1.1
wheel==0.34.2

請(qǐng)注意這個(gè) Warning,提示了你哪些模塊會(huì)造成其依賴的模塊版本發(fā)生沖突,這是非常有用的提示,很多時(shí)候問題就出現(xiàn)在這里。

不僅如此,如果存在循環(huán)性依賴,比如:

**CircularDependencyA => CircularDependencyB => CircularDependencyA **

它會(huì)進(jìn)行如下提示:

$ pipdeptree --exclude pip,pipdeptree,setuptools,wheel
Warning!!! Cyclic dependencies found:
- CircularDependencyA = > CircularDependencyB = > CircularDependencyA
- CircularDependencyB = > CircularDependencyA = > CircularDependencyB
------------------------------------------------------------------------
wsgiref==0.1.2
argparse==1.2.1

如果你想生成 requirements.txt,可以這么做:

$ pipdeptree -f | tee locked-requirements.txt
Flask==0.10.1
  itsdangerous==0.24
  Jinja2==2.11.2
    MarkupSafe==0.23
  Werkzeug==0.11.2
gnureadline==8.0.0
-e git+git@github.com:naiquevin/lookupy.git@cdbe30c160e1c29802df75e145ea4ad903c05386#egg=Lookupy
pipdeptree @ file:///private/tmp/pipdeptree-2.0.0b1-py3-none-any.whl
  pip==20.1.1
setuptools==47.1.1
wheel==0.34.2

在確認(rèn)沒有沖突的依賴項(xiàng)后,甚至可以將其“鎖定”,其中所有包都將固定到其當(dāng)前安裝的版本:

$ pipdeptree -f | sed 's/ //g' | sort -u > locked-requirements.txt

3. 可視化依賴樹

為了能夠可視化展示依賴樹,我們需要安裝GraphViz,安裝GraphViz的教程可見這篇文章:Python 一鍵轉(zhuǎn)化代碼為流程圖。安裝完成后輸入以下命令:

pipdeptree --graph-output png > dependencies.png

# pipdeptree --graph-output dot > dependencies.dot
# pipdeptree --graph-output pdf > dependencies.pdf
# pipdeptree --graph-output svg > dependencies.svg

支持四種格式的輸出,這里png的輸出效果如下:

圖片

效果是非常不錯(cuò)的,大家如果有需要清理依賴的大型項(xiàng)目,可以用 pipdeptree 試一下。

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 模塊
    +關(guān)注

    關(guān)注

    7

    文章

    2613

    瀏覽量

    47010
  • 代碼
    +關(guān)注

    關(guān)注

    30

    文章

    4671

    瀏覽量

    67765
  • 虛擬環(huán)境
    +關(guān)注

    關(guān)注

    0

    文章

    27

    瀏覽量

    8914
  • python
    +關(guān)注

    關(guān)注

    53

    文章

    4753

    瀏覽量

    84077
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    Python項(xiàng)目依賴管理

    之前一直比較抵觸用 Python ,很大一部分原因是覺得 Python 項(xiàng)目的環(huán)境管理比較混亂。Node.js 有 Npm 包管理工具,通過 package.json 配置項(xiàng)目依賴,最
    發(fā)表于 08-29 10:46 ?965次閱讀

    Linux操作系統(tǒng)是同樣需要清理工具

      大家可能都聽說過Windows清理工具,無論是清理磁盤工具還是清理各種注冊(cè)表信息工具,其都能夠幫助我們恢復(fù)電腦的運(yùn)行速度。但是對(duì)于Lin
    發(fā)表于 01-18 14:03

    想學(xué)labview異步多線程,大型項(xiàng)目規(guī)范,各類通訊的找我

    想學(xué)labview異步多線程,大型項(xiàng)目規(guī)范,各類通訊的找我,qq***
    發(fā)表于 02-27 21:19

    Creator 4.1 update 1:首先清理并構(gòu)建失敗,第二次清理和構(gòu)建工作

    項(xiàng)目正在使用外部庫(kù)。(依賴關(guān)系被正確地設(shè)置為依賴于外部庫(kù),并且外部庫(kù)在到達(dá)生成失敗的主要項(xiàng)目之前正確構(gòu)建)。失敗的文件不是庫(kù)的一部分,但它是一個(gè)簡(jiǎn)單的時(shí)鐘信號(hào),使用示意
    發(fā)表于 12-19 14:53

    用labview寫大型項(xiàng)目時(shí),應(yīng)該用什么架構(gòu)寫能利于調(diào)試和維護(hù)?

    用labview寫大型項(xiàng)目時(shí),應(yīng)該用什么架構(gòu)寫能利于調(diào)試和維護(hù),麻煩各位給些建議,非常感謝
    發(fā)表于 03-05 16:52

    面向大型項(xiàng)目組織的Web工作流集成框架

    大型工程項(xiàng)目管理組織通常是由多個(gè)企業(yè)動(dòng)態(tài)組成的企業(yè)聯(lián)合體,每個(gè)企業(yè)是在管理、技術(shù)、資源等方面有著自己鮮明行業(yè)特點(diǎn)的高度自治實(shí)體。本文采用有限狀態(tài)機(jī)作為工作流
    發(fā)表于 08-31 10:36 ?6次下載

    Windows冗余清理工具

    電子發(fā)燒友網(wǎng)站提供《Windows冗余清理工具.exe》資料免費(fèi)下載
    發(fā)表于 06-03 14:21 ?1次下載

    管理與開發(fā)LabVIEW大型項(xiàng)目

    LabVIEW教學(xué)課件與源代碼,學(xué)習(xí)LabVIEW的很必要資料。
    發(fā)表于 12-14 17:44 ?83次下載

    如何在代碼編寫器Studio中處理大型項(xiàng)目詳細(xì)概述

    此應(yīng)用報(bào)告檢查圍繞大型、多站點(diǎn)項(xiàng)目的問題。在代碼編寫器Studio中的開發(fā),并提供了如何使用擴(kuò)展的技術(shù)代碼編寫器工作室的特點(diǎn),以解決這些問題。討論的一些特征使用源代碼控制和外部MaFag文件,以及可執(zhí)行文件的符號(hào)調(diào)試內(nèi)置,使用大量的項(xiàng)目
    發(fā)表于 04-25 09:20 ?2次下載
    如何在代碼編寫器Studio中處理<b class='flag-5'>大型項(xiàng)目</b>詳細(xì)概述

    區(qū)塊鏈在發(fā)展中國(guó)家設(shè)施大型項(xiàng)目中的意義

    區(qū)塊鏈技術(shù)能夠組織大量與一系列交易相關(guān)的細(xì)節(jié),這對(duì)于管理整個(gè)發(fā)展中國(guó)家的基礎(chǔ)設(shè)施大型項(xiàng)目來說,可能是理想的選擇,就像我國(guó)的“一帶一路”計(jì)劃(Belt and Road Initiative)所涉及的那些項(xiàng)目一樣。
    發(fā)表于 08-10 14:28 ?1261次閱讀

    c盤清理工具

    本視頻主要詳細(xì)介紹了c盤清理工具,分別有百度衛(wèi)士、360安全衛(wèi)士、QQ電腦管家、金山衛(wèi)士、清除上網(wǎng)痕跡(深度上網(wǎng)痕跡清理器)。
    的頭像 發(fā)表于 03-06 17:15 ?2436次閱讀

    大型項(xiàng)目中使用Cscope

    何其他大型項(xiàng)目但基本步驟都是相同的,這其中包括C + +或者Java項(xiàng)目. 下載源碼.首先得到的源代碼.你可以從http://www.kernel.org下載Linux內(nèi)核源代碼.在后面
    發(fā)表于 04-02 14:36 ?324次閱讀

    Google刪除Chrome清理工具

    在 2015 年,Google 為了防止惡意軟件篡改 Chrome 瀏覽器,影響用戶正常上網(wǎng)、修改搜索結(jié)果、重定向到其他頁(yè)面,或者在用戶訪問的頁(yè)面中注入額外的廣告(非網(wǎng)站自身的廣告),推出了一個(gè)清理工具
    的頭像 發(fā)表于 03-15 16:53 ?506次閱讀

    大型Python項(xiàng)目依賴樹如何一鍵理清

    你可能時(shí)常會(huì)遇到由于包的版本不匹配導(dǎo)致代碼報(bào)錯(cuò)的問題,由于 pip freeze 將所有依賴項(xiàng)顯示為二維列表,這時(shí)候如果想找到這個(gè)錯(cuò)誤版本的包是比較麻煩的事情。這時(shí)候,有個(gè)工具你必須得知道,它就
    的頭像 發(fā)表于 10-21 11:45 ?416次閱讀
    <b class='flag-5'>大型</b>Python<b class='flag-5'>項(xiàng)目</b><b class='flag-5'>依賴</b>樹如何一鍵理清

    Kondo-為開發(fā)者設(shè)計(jì)的磁盤清理工具

    kondo 是一款為開發(fā)者設(shè)計(jì)的磁盤清理工具,支持清理 16 種語言和工具鏈中的構(gòu)建相關(guān)產(chǎn)物。
    的頭像 發(fā)表于 12-09 17:26 ?499次閱讀
    Kondo-為開發(fā)者設(shè)計(jì)的磁盤<b class='flag-5'>清理工具</b>