2013-01-21 25 views
4

我正在爲我正在編寫的Python包開發一個發行版,所以我可以在PyPI上發佈 。這是我第一次用的distutils工作,setuptools的,分發, 點子,setup.py以及所有和我掙扎了一下有一個學習曲線 這比我預期的相當多的陡峭的:)Python發行版的用例是什麼?

我在通過在setup.py中的data_files參數中指定他們,將我的測試數據文件的一些測試數據文件設置爲 包含在tarball中,直到我遇到不同的帖子,指向 朝向MANIFEST.in文件。就在這時,我突然想到你在使用tarball/zip(使用MANIFEST.in)時包含的東西以及當用戶的Python環境easy_install或其他任何(基於setup.py中指定的 )在 中安裝的東西是什麼兩件完全不同的事情;通常在壓縮包中的 比實際安裝的要多得多。

這立即引發了我的代碼異味,並認識到有 必須是一個以上的分佈用例;我一直在關注 只有一個我真的參加過,使用easy_install或pip來安裝一個 庫。然後我意識到我正在開發工作產品,我只對部分理解我正在開發的最終用戶進行了部分理解。

所以我的問題是這樣的:「什麼是用例的Python發行 比一個人的Python環境中安裝它的其他還有誰,我這種分發服務 又哪裏最關心的?」

這裏有一些我還沒有想出工作的問題尚未對 答案是熊:

  • 它是一個明智的做法,包括一切的源代碼控制 (GIT)下的源代碼分發?在github時代,是否有人下載 源代碼發行版以訪問完整的項目源代碼?或者我應該 只發佈一個鏈接到我的github回購?不會包含所有內容,包括 分發版本,並且需要花費更長時間才能下載僅供 安裝的人員使用?

  • 我打算在readthedocs.org上託管文檔。它是否使我的任何 都能在發佈源 發行版中包含HTML版本的文檔?

  • 是否有人使用python setup.py test來運行測試源 分佈?如果是這樣,他們在什麼角色以及他們處於什麼境地? I 不知道我是否應該爲做這項工作而煩惱,如果我這樣做,是誰爲 工作。

回答

3

,你可能想在源代碼發佈到包括但也許不能安裝某些事情包括:

  • 包執照
  • 測試套件
  • 的文件(可能是加工形式就像源代碼中的HTML一樣)
  • 可能用於構建源代碼分發的任何其他腳本

很多時候,這將是您在版本控制中管理的內容的大部分或全部內容,可能還有一些生成的文件。

當這些文件可以在線或通過版本控制時,您可以這樣做的主要原因是讓人們知道他們的文檔或測試版本與他們正在運行的代碼相匹配。

如果您只在線託管最新版本的文檔,那麼對於因某種原因必須使用舊版本的用戶而言,它們可能沒有用處。並且版本控制中提示的測試套件可能與源代碼發行版中的代碼版本不兼容(例如,如果它測試了自那時起添加的功能)。爲了獲得正確版本的文檔或測試,他們需要梳理通過版本控制來尋找與源代碼分發相對應的標籤(假設開發人員不喜歡標籤樹)。在源代碼分發中提供這些文件可以避免這個問題。

對於想要運行測試套件的人來說,我有許多Python模塊打包在各種Linux發行版中,偶爾還會得到與其環境中的測試失敗相關的錯誤報告。當我遇到一個錯誤並且想要檢查外部代碼是否按照作者在我的環境中所期望的那樣行事時,我還使用了其他人模塊的測試套件。

+0

感謝這個詹姆斯,真的很有幫助:) – scanny

相關問題