我的 python 程式都是小程式, 但經常用到很多相依套件。
(因為我既懶惰又很會搜尋 ^_^)
偶爾會想知道: 到底這些套件彼此之間有什麼樣的相依性?
例如有一天想畫股票 K 線圖, 爬文得知至少有 mplfinance
跟 dash 兩個現成函式庫可用。
那到底它們各自又會引進哪些函式庫呢? 交集多嗎?
這時就可以用 pipdeptree 來畫圖。
以 python3 為例, 用 pip3 install --user pipdeptree
安裝 pipdeptree, 並且也必須安裝 「想要研究相依性的那些套件」,
然後: pipdeptree --graph-output svg -p dash,mplfinance
> dash-mplfinance.svg
就產生一張壯觀的 svg 圖,
可以用瀏覽器打開來欣賞。
對了, 它會用到 graphviz 指令, 也需要用到 python 的 graphviz 套件。
所以在 *ubuntu 系列系統上, 要先 sudo apt install graphviz
及 pip3 install --user graphviz
。
Graphviz 畫圖太好用了, 我經常用, 所以每次安裝 *ubuntu 都直接裝好,
也經常忘記它是其他某些套件的相依套件。
事實上我會找到 pipdeptree , 就是因為猜想一定有人早就拿它來畫相依套件
(如果我自己要寫, 就會走這條捷徑)
所以當初的搜尋關鍵詞是 「pip dependency graphviz」。
不過因為 pipdeptree 的原始功能是產生 json 檔等等文字資訊,
所以作者沒有把 graphviz 列為它的相依套件。
如果你會 graphviz 的 dot 語法, 而且不滿意 pipdeptree 畫的圖, 那也可以把 --graph-output 的參數設成 dot, 自己編輯 pipdeptree 輸出的 dot 文字檔, 再手動用 graphviz 轉成圖檔。
看起來不錯的pip套件!
回覆刪除我自己用到graphviz的機會,大都是用make2graph來觀察Makefile結構