一区二区三区三上|欧美在线视频五区|国产午夜无码在线观看视频|亚洲国产裸体网站|无码成年人影视|亚洲AV亚洲AV|成人开心激情五月|欧美性爱内射视频|超碰人人干人人上|一区二区无码三区亚洲人区久久精品

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

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

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

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

科技綠洲 ? 來(lái)源:Python實(shí)用寶典 ? 作者:Python實(shí)用寶典 ? 2023-10-21 11:45 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

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

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

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

1.安裝

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

pip install pipdeptree

已通過(guò)測(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

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

$ 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ì)造成其依賴(lài)的模塊版本發(fā)生沖突,這是非常有用的提示,很多時(shí)候問(wèn)題就出現(xiàn)在這里。

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

**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)沒(méi)有沖突的依賴(lài)項(xiàng)后,甚至可以將其“鎖定”,其中所有包都將固定到其當(dāng)前安裝的版本:

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

3. 可視化依賴(lài)樹(shù)

為了能夠可視化展示依賴(lài)樹(shù),我們需要安裝GraphViz,安裝GraphViz的教程可見(jiàn)這篇文章: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ò)的,大家如果有需要清理依賴(lài)的大型項(xiàng)目,可以用 pipdeptree 試一下。

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

    關(guān)注

    117

    文章

    3826

    瀏覽量

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

    關(guān)注

    30

    文章

    4899

    瀏覽量

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

    關(guān)注

    0

    文章

    29

    瀏覽量

    9056
  • python
    +關(guān)注

    關(guān)注

    56

    文章

    4827

    瀏覽量

    86666
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

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

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

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

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

    一鍵還原系統(tǒng)

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

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

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

    Stm32怎么一鍵下載

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

    Stm32 一鍵下載電路詳解

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

    docker compose一鍵打包部署項(xiàng)目的實(shí)踐

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

    Jenkins+docker+springboot一鍵自動(dòng)部署項(xiàng)目

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

    Jenkins+Docker一鍵自動(dòng)化部署SpringBoot項(xiàng)目

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

    Jenkins+Docker實(shí)現(xiàn)一鍵自動(dòng)化部署項(xiàng)目!

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

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

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

    關(guān)于Jenkins+docker+springboot一鍵自動(dòng)部署項(xiàng)目

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

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

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

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

    變電站一鍵順控系統(tǒng)和開(kāi)關(guān)柜一鍵順控技術(shù)雖然都涉及到“一鍵順控”的概念,但它們?cè)趹?yīng)用范圍和具體實(shí)現(xiàn)上有所不同,因此變電站一鍵順控系統(tǒng)和開(kāi)關(guān)柜一鍵
    的頭像 發(fā)表于 07-31 13:34 ?1308次閱讀
    變電站<b class='flag-5'>一鍵</b>順控系統(tǒng)和開(kāi)關(guān)柜<b class='flag-5'>一鍵</b>順控有區(qū)別嗎?

    開(kāi)關(guān)柜一鍵順控在一鍵停電、一鍵送電中的作用

    蜀瑞創(chuàng)新為大家科普,開(kāi)關(guān)柜一鍵順控技術(shù)在一鍵停電和一鍵送電中發(fā)揮了快速響應(yīng)、減少人為錯(cuò)誤、提高安全性、簡(jiǎn)化操作流程、降低操作風(fēng)險(xiǎn)、提高送電成功率等綜合優(yōu)勢(shì),對(duì)于提升電力系統(tǒng)的運(yùn)行效率、安全性以及自動(dòng)化水平具有重要意義。
    的頭像 發(fā)表于 02-27 09:13 ?672次閱讀