Python Distutils-SIG: 任務和分工
Python Distutils-SIG
任務和分工
在第七屆國際Python大會開發者日會議“擴充套件構建之痛”上,我們列舉了開發、分發和安裝Python模組所需的任務;就任何分發/安裝系統概念化所需的分工達成了初步共識;並提出了一套提議的使用者介面。本文件描述了任務和分工;提議的使用者介面在其他地方描述。
確定了三個角色:開發者、打包者和安裝者(從某種意義上說,是系統的終端使用者;我將堅持使用“安裝者”,因為他不是唯一的使用者)。顯然,這些角色之間存在重疊;有些任務必須由開發者和打包者共同完成,有些任務必須由所有三者共同完成,等等。我將嘗試將每個任務與一個“主要”角色關聯起來,並在其他角色中提及它們,如果它們也出現在那裡的話。
開發者任務
開發者的主要任務是
- 開發
- 編寫和維護模組
- 文件
- 為模組編寫文件(請注意,以標準方式為Python模組編寫文件的問題不在Distutils-SIG的職權範圍內;但是,如果確實出現了這樣的標準方式,我們應該盡力支援它,例如提供與標準文件處理工具的簡單介面)
- 提供測試套件
- 編寫程式碼,(理論上)測試模組的每個部分,並以標準方式報告成功或失敗(distutils的作用是提供一個執行測試套件和解釋其結果的標準介面)
- 提供安裝工具
- 目前耗時、易出錯且非常繁瑣(並且開發者之間做法不一致):Distutils-SIG存在的目的就是解決這個問題!distutils應該成為那個安裝工具;開發者通常只需要提供幫助distutils完成工作所需的資訊
- 建立原始碼分發包
- 不過是將原始碼樹的子集打包,但是——鑑於distutils將擁有名稱、版本號等資訊——可以在其幫助下變得微不足道
打包者任務
- 建立已構建的分發包
- 實際上是打包者存在的唯一原因:這包括下載原始碼分發包,構建模組,並根據構建結果建立新的可下載資源
安裝者任務
- 構建
- 將原始檔轉換為可供安裝的形式。這最終可能涉及以下內容
- 將
.py
檔案複製到模擬安裝樹中 - 將
.py
檔案編譯成.pyc
和.pyo
形式 - 編譯和連結C擴充套件,將共享物件放入模擬安裝樹中
- 處理文件(例如,為Unix手冊頁建立*roff檔案,為GNU資訊系統建立info檔案,和/或為Web友好文件建立HTML檔案)
- 將
- test
- 執行開發者提供的測試套件,並確保模組透過所有測試
- 安裝
- 將模擬安裝樹複製到現有的Python庫樹中(不一定是系統Python庫——可以位於使用者的家目錄中,或臨時目錄中)
.tar
或.zip
檔案)?安裝已構建分發包時是否應該執行測試套件,如果是,如何執行?