2020年1月16日 星期四

pip 套件繪製相依圖

我的 python 程式都是小程式, 但經常用到很多相依套件。 (因為我既懶惰又很會搜尋 ^_^) 偶爾會想知道: 到底這些套件彼此之間有什麼樣的相依性? 例如有一天想畫股票 K 線圖, 爬文得知至少有 mplfinance 跟 dash 兩個現成函式庫可用。 那到底它們各自又會引進哪些函式庫呢? 交集多嗎? 這時就可以用 pipdeptree 來畫圖。 以 python3 為例, 用 pip3 install --user pipdeptree 安裝 pipdeptree, 並且也必須安裝 「想要研究相依性的那些套件」, 然後: pipdeptree --graph-output svg -p dash,mplfinance > dash-mplfinance.svg 就產生一張壯觀的 svg 圖, 可以用瀏覽器打開來欣賞。

dash 跟 mplfinance 這兩套件各自引進哪些函式庫呢? 交集多嗎?

對了, 它會用到 graphviz 指令, 也需要用到 python 的 graphviz 套件。 所以在 *ubuntu 系列系統上, 要先 sudo apt install graphvizpip3 install --user graphviz 。 Graphviz 畫圖太好用了, 我經常用, 所以每次安裝 *ubuntu 都直接裝好, 也經常忘記它是其他某些套件的相依套件。 事實上我會找到 pipdeptree , 就是因為猜想一定有人早就拿它來畫相依套件 (如果我自己要寫, 就會走這條捷徑) 所以當初的搜尋關鍵詞是 「pip dependency graphviz」。 不過因為 pipdeptree 的原始功能是產生 json 檔等等文字資訊, 所以作者沒有把 graphviz 列為它的相依套件。

如果你會 graphviz 的 dot 語法, 而且不滿意 pipdeptree 畫的圖, 那也可以把 --graph-output 的參數設成 dot, 自己編輯 pipdeptree 輸出的 dot 文字檔, 再手動用 graphviz 轉成圖檔。

1 則留言:

  1. 看起來不錯的pip套件!
    我自己用到graphviz的機會,大都是用make2graph來觀察Makefile結構

    回覆刪除