那曲檬骨新材料有限公司

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

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

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

大型Python項目依賴樹如何一鍵理清

科技綠洲 ? 來源:Python實用寶典 ? 作者:Python實用寶典 ? 2023-10-21 11:45 ? 次閱讀

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

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

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

1.安裝

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

pip install pipdeptree

已通過測試的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 最多只能顯示一個依賴的列表,而在 pipdeptree ,每個模塊的依賴關(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

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

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

**CircularDependencyA => CircularDependencyB => CircularDependencyA **

它會進行如下提示:

$ 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

在確認沒有沖突的依賴項后,甚至可以將其“鎖定”,其中所有包都將固定到其當前安裝的版本:

$ 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的輸出效果如下:

圖片

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

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

    關(guān)注

    117

    文章

    3796

    瀏覽量

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

    關(guān)注

    30

    文章

    4828

    瀏覽量

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

    關(guān)注

    0

    文章

    28

    瀏覽量

    8974
  • python
    +關(guān)注

    關(guān)注

    56

    文章

    4807

    瀏覽量

    85040
收藏 人收藏

    評論

    相關(guān)推薦

    Python項目依賴管理

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

    方便快捷:PADS的一鍵快捷功能:一鍵灌銅,一鍵檢查DRC

    傾情奉獻給大家,非常實用的快捷功能一鍵灌銅: [hide] [/hide]一鍵檢查連通性:[hide][/hide]一鍵檢查安全間距::[hide] [/hide]一鍵清除Error標
    發(fā)表于 11-07 15:06

    一鍵還原系統(tǒng)

    老毛桃一鍵 V2.0.12.5更新說明: 1、細節(jié)完善及處理已知的問題2、更新GRUB模塊,提高兼容性3、高級項“搜索”開放自定后綴,可搜索任何后綴的GHO還原4、些函數(shù)位置及變量調(diào)整5、完善1
    發(fā)表于 06-18 20:41

    【GoKit申請】一鍵電源管理系統(tǒng)

    申請理由:智能家居越來越流行,需要尋找一鍵解決家庭電源管理的方案,所以針對這種社會需要,設(shè)計一鍵式的家庭電源管理方案。以前進行過攝像頭,藍牙相關(guān)的
    發(fā)表于 09-22 09:55

    Stm32怎么一鍵下載

    文章目錄前言一鍵下載一鍵下載原理硬件原理圖跳帽與啟動存儲映射串口下載程序由來一鍵下載流程通過 USB 控制機器復(fù)位握手解讀前言最近在又要折騰 stm32 了,所以翻出了腳落里的開發(fā)板,先復(fù)習(xí)下
    發(fā)表于 08-05 08:13

    一鍵ghost11使用教程

    一鍵ghost11使用教程
    發(fā)表于 01-08 09:25 ?60次下載
    <b class='flag-5'>一鍵</b>ghost11使用教程

    Stm32 一鍵下載電路詳解

    文章目錄前言一鍵下載一鍵下載原理硬件原理圖跳帽與啟動存儲映射串口下載程序由來一鍵下載流程通過 USB 控制機器復(fù)位握手解讀前言最近在又要折騰 stm32 了,所以翻出了腳落里的開發(fā)板,先復(fù)習(xí)下
    發(fā)表于 11-24 18:06 ?9次下載
    Stm32 <b class='flag-5'>一鍵</b>下載電路詳解

    docker compose一鍵打包部署項目的實踐

    【導(dǎo)讀】本文介紹了 docker compose 一鍵打包部署項目的實踐。
    的頭像 發(fā)表于 08-30 11:03 ?1623次閱讀

    Jenkins+docker+springboot一鍵自動部署項目

    本文章實現(xiàn)最簡單全面的Jenkins+docker+springboot 一鍵自動部署項目,步驟齊全,少走坑路。
    的頭像 發(fā)表于 09-14 09:30 ?1635次閱讀

    Jenkins+Docker一鍵自動化部署SpringBoot項目

    本文章實現(xiàn)最簡單全面的Jenkins+docker+springboot 一鍵自動部署項目,步驟齊全,少走坑路。
    的頭像 發(fā)表于 12-14 10:04 ?966次閱讀

    Jenkins+Docker實現(xiàn)一鍵自動化部署項目

    本文章實現(xiàn)最簡單全面的Jenkins+docker+springboot 一鍵自動部署項目,步驟齊全,少走坑路。
    的頭像 發(fā)表于 01-06 15:36 ?1301次閱讀

    ApkAnalyser一鍵提取安卓應(yīng)用APK敏感信息

    一鍵提取安卓應(yīng)用中可能存在的敏感信息。使用Python開發(fā),依賴于apkutils模塊,可執(zhí)行文件使用pyinstaller打包。
    的頭像 發(fā)表于 03-31 10:45 ?1392次閱讀

    關(guān)于Jenkins+docker+springboot一鍵自動部署項目

    本文章實現(xiàn)最簡單全面的Jenkins+docker+springboot 一鍵自動部署項目,步驟齊全,少走坑路。
    的頭像 發(fā)表于 05-16 08:59 ?887次閱讀
    關(guān)于Jenkins+docker+springboot<b class='flag-5'>一鍵</b>自動部署<b class='flag-5'>項目</b>

    一鍵開關(guān)電路的好處?生活中的一鍵開關(guān)電路有哪些?

    一鍵開關(guān)電路的好處?生活中的一鍵開關(guān)電路有哪些? 一鍵開關(guān)電路是指個電路設(shè)計,可以用個按鈕或開關(guān)來控制多個電器或燈具的開關(guān)。
    的頭像 發(fā)表于 10-22 15:18 ?2409次閱讀

    變電站一鍵順控系統(tǒng)和開關(guān)柜一鍵順控有區(qū)別嗎?

    變電站一鍵順控系統(tǒng)和開關(guān)柜一鍵順控技術(shù)雖然都涉及到“一鍵順控”的概念,但它們在應(yīng)用范圍和具體實現(xiàn)上有所不同,因此變電站一鍵順控系統(tǒng)和開關(guān)柜一鍵
    的頭像 發(fā)表于 07-31 13:34 ?689次閱讀
    變電站<b class='flag-5'>一鍵</b>順控系統(tǒng)和開關(guān)柜<b class='flag-5'>一鍵</b>順控有區(qū)別嗎?
    二八杠 | 百家乐官网15人桌布| 新百家乐庄闲路单图记录| 百家乐官网变牌器批发| 全讯网3| 澳门百家乐秘诀| 哪里有百家乐官网代理| 保时捷娱乐城可靠吗| 大发888下载17| 广州百家乐牌具公司| 怎么看百家乐官网路单| 黄石市| 龙里县| 上蔡县| 河津市| 爱博彩| 大连娱网棋牌打滚子| 君豪棋牌是真的吗| 奇博国际娱乐网| 牌九娱乐城| 遵化市| 百家乐官网双层筹码盘| 娱乐城百家乐官网送白菜| 普宁市| 晓游棋牌官方下载| 大发888游戏平台hg| 百家乐桌子租| 博九百家乐的玩法技巧和规则| 真人百家乐赌法| 百家乐注册18元体验金| 名仕百家乐的玩法技巧和规则| 足球.百家乐投注网出租| 百家乐买闲打法| 北京太阳城小区| 金宝博188| 多彩国际娱乐| 百家乐官网获胜秘决| 邻水| 百家乐官网现金网开户平台| 百家乐官网一起多少张牌| 网上百家乐公式|