Python套件依賴關係圖工具: Gluttony

前一陣子在裝TurboGears2時遇到某個套件因為依賴的某個套件不支援Python2.6,無法使用easy_install成功安裝,必需先手動安裝那個套件再安裝TurboGears2,我當時覺得很討厭,就開始思考,當一個專案的依賴套件越來越多時,只要其中有一個套件不能用,整個系統可能就會因此無法使用,特別是在越底層的套件出問題,所造成的影響可能就會越大,我開始想說,如果我們能夠把這些套件之間的依賴關係圖用一個工具畫出來,那就可以瞭解它的依賴情況,如此一來在決定是否要使用或是找問題時會較容易,也可以研究依賴關係對於大型專案會造成的影響,於是就花了一點時間寫了一個工具,是基於pip上面的,它叫做Gluttony,如果有看過鋼之鍊金術士大概就知道那是什麼東西,七原罪之一的暴食,因為我看那工具在爬依賴套件時就像在瘋狂吃東西似的,於是就想到這名字,而且這個名字在pypi裡沒有人用,於是就選了這個名字

工具的用法和下載、安裝等等,都可以在Google code的頁面找到,在此就不贅述

Google code: Glottony

一些專案的依賴關係圖

當我完成這些工具之後,最開心的事就是去找一些專案來跑跑看,看到底會出現什麼結果

TurboGears1.1

TurboGears1.1依賴關系圖

像這樣的依賴關系其實算還好,簡單明瞭,而且也很有結構

TurboGears2

TurboGears2依賴關系圖

我們可以發現在TurboGears2的依賴關係又更複雜了一些,因為它是架構在Pylons上,所以大部份依賴都在Pylons上,而devtools是用於開發用的工具,事實上有一些細節上的依賴關係會在setup專案時才會被裝進來,因為TurboGears2講求的是彈性,像是Template language就可以支援好幾種,也可以自行將那部份換掉,所以圖上可能看不到,整體上來看,這樣的依賴關係算是還蠻健康的,層次分明,接著我們就來看一個病態一點的例子

Plone

Plone依賴關係圖

點圖片下載全尺吋圖檔

你一定在想這沱黑黑的到底是什麼東西,別懷疑,這個是Plone的套件依賴關系圖,全圖檔案大小是19.3MB,原本圖檔還太大,Graphiz還render不出來,我是縮小了一點尺吋才畫出來的,看了我真的覺得這實在是太誇張了,Plone到底是怎樣開發出來的,我很慶幸當時把ez2learn.com從Plone移到其它CMS,我原本還打算學Plone怎麼玩,還好當時覺得他底層東西實在太多,不然可能到現在我還在研究 囧

This entry was posted in Python, 中文文章 and tagged , , , . Bookmark the permalink.

7 Responses to Python套件依賴關係圖工具: Gluttony

  1. Jing says:

    Plone還真是恐怖!那另一隻怪物 – zope呢?印象中他應該比plone還誇張?!

  2. victor says:

    不,Plone比Zope複雜,因為Plone是架構在Zope上,它的依賴關係圖在這裡可以找到

    http://encolpe.wordpress.com/2010/02/19/python-package-dependencies-displayed/

    一樣也是很惡心,但是看起來沒有Plone這麼密集

  3. RobTW says:

    基於維護的考量,個人很想用 Python CMS 幫一些 NPOs 做一些事,搜尋了一下,才發現除了 Plone,其他的 Python CMS 都胎死腹中的樣子。看來只能回去用 PHP CMS 了!!無奈啊!

  4. Pingback: 这周我加星 – 2010年04月9日 : 这周我加星

  5. Pingback: 一些有用的Python函式庫列表 | Ben's Computer Graphics Blog

  6. Pingback: 一些有用的Python函式庫列表 | 岭南六少 - 一朵在LAMP架构下挣扎的云

  7. 丹丹 says:

    請問Gluttony要怎麼安裝使用呀?? 謝謝