注意: 雖然 JavaScript 對於本網站不是必需的,但您與內容的互動將受到限制。請開啟 JavaScript 以獲得完整的體驗。

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庫——可以位於使用者的家目錄中,或臨時目錄中)
請注意,這些假設安裝者正在使用原始碼分發包進行操作——如果總是如此,那麼打包者就浪費了他的時間,我們不希望那樣。安裝已構建的分發包應該很簡單,但有一些未解決的問題:我們如何處理“智慧”和“啞”已構建分發包之間的區別(例如RPM或Wise Installer與簡單的.tar.zip檔案)?安裝已構建分發包時是否應該執行測試套件,如果是,如何執行?