精品国产人成在线_亚洲高清无码在线观看_国产在线视频国产永久2021_国产AV综合第一页一个的一区免费影院黑人_最近中文字幕MV高清在线视频

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

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

3天內不再提示

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

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

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

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

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

1.安裝

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

pip install pipdeptree

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

2.用法和示例

pip freeze 和 pipdeptree 最大的區別如下:

# 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 ,每個模塊的依賴關系能夠非常直觀地展示出來:

$ 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,提示了你哪些模塊會造成其依賴的模塊版本發生沖突,這是非常有用的提示,很多時候問題就出現在這里。

不僅如此,如果存在循環性依賴,比如:

**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 一鍵轉化代碼為流程圖。安裝完成后輸入以下命令:

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 試一下。

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 程序
    +關注

    關注

    116

    文章

    3777

    瀏覽量

    80855
  • 代碼
    +關注

    關注

    30

    文章

    4751

    瀏覽量

    68359
  • 虛擬環境
    +關注

    關注

    0

    文章

    27

    瀏覽量

    8925
  • python
    +關注

    關注

    56

    文章

    4782

    瀏覽量

    84463
收藏 人收藏

    評論

    相關推薦

    Python項目依賴管理

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

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

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

    一鍵還原系統

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

    【GoKit申請】一鍵電源管理系統

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

    Stm32怎么一鍵下載

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

    一鍵ghost11使用教程

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

    Stm32 一鍵下載電路詳解

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

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

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

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

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

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

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

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

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

    ApkAnalyser一鍵提取安卓應用APK敏感信息

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

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

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

    一鍵開關電路的好處?生活中的一鍵開關電路有哪些?

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

    變電站一鍵順控系統和開關柜一鍵順控有區別嗎?

    變電站一鍵順控系統和開關柜一鍵順控技術雖然都涉及到“一鍵順控”的概念,但它們在應用范圍和具體實現上有所不同,因此變電站一鍵順控系統和開關柜一鍵
    的頭像 發表于 07-31 13:34 ?463次閱讀
    變電站<b class='flag-5'>一鍵</b>順控系統和開關柜<b class='flag-5'>一鍵</b>順控有區別嗎?