2017-08-30 27 views
1

我有一個數字,我在我不同的項目中使用的輔助模塊的輔助模塊做。例如,這些輔助模塊都包含用於記錄,文件,裝飾等Python打包:如何處理,我在我的大多數項目都使用

一些代碼對於我個人用的,我可以簡單地捆綁並安裝所有的輔助模塊。

如果我想發表我的PyPI上的項目,但是,什麼是最合適的方式去?是否也可以將輔助模塊作爲一個包發佈 - 儘管它們捆綁在一起並沒有什麼意義,並且對於任何人來說安裝都很難,除非他們使用我的其他項目 - 然後需要爲每個包安裝輔助包我的其他項目?

+1

除非它們很大,否則將它們捆綁爲主項目的一部分可能更容易。當然,如果人們安裝了多個項目,他們可能會有少量多餘的文件,但這可能最多隻有千字節。 – Amber

+0

@Amber對不起,也許是一個愚蠢的問題,我是新來的包裝,但我如何將它們捆綁到我的主項目中而不需要複製文件? – Bananach

回答

1

的情況並不少見/包,例如krux/tcp-stream-kafka-producer基於krux/java-stdlib喜歡這些庫分割成獨立的「項目」(隨便舉個例子 - 只是因爲我昨天瀏覽回購...)

所以,我建議你將實用程序命名爲<something>-util(或「各種」或「東西」:)),然後將它們作爲模塊分別在pipy上單獨發佈。這是更簡單的方法,因爲它允許不同的項目使用不同版本的底層庫,而無需維護該庫的多個副本以及清晰的版本/依賴關係。

你的其他選擇:

  1. 包括在最流行的項目庫:這導致了項目的依賴並不真正意義。例如,如果該項目更改主版本,受影響的項目是否受影響? (你不知道)

  2. 複製你使用的每一個項目:這可能對於短時間和一些項目是可以的,但是很快你就會失去跟蹤改變,並且公共文件將不同步。我之前就已經這麼做了,花費幾個小時來調試你已經在另一個項目中修補過的東西是非常煩人的!

唯一的缺點我與釋放它作爲一個單獨的包看到的是,你必須要小心的衝突:即項目需要v0.1.1,而不是v0.1.0而B項目是周圍的其他方式。謝天謝地,python venv可以幫助解決這種情況。

希望它有幫助

+1

如果你擔心上傳「無用」包的PyPI你可以送花兒給人剛剛創建的所有實用程序文件一個git回購和回購添加到您的依賴關係。 – orangeInk

+0

@urban謝謝,這是令人欣慰的:)至於最後一段:你有沒有解釋如何告訴setuptools的虛擬環境中安裝,而不強迫最終用戶創建虛擬環境中自己的鏈接? – Bananach

+0

@Bananach'venv'將解決這個問題,如果你處理衝突/發佈......如果你有最終用戶,我不是100%確定最好的方法。我通常在這種情況下做的就是按照一個'composer'(PHP)一樣的方式 - 有install.sh/Makefile,將下載的依賴於' /供應商/'然後將其包括在路徑...的Python/setuptools可能有這樣做的「官方」方式 – urban

相關問題