組織和開發由共享一個(或多個)更大的Python庫的許多小腳本組成的項目的最佳方式是什麼?使用共享軟件包組織Python項目
我們在我們的倉庫中有一堆程序,它們都使用存儲在同一個倉庫中的相同的庫。所以,換句話說,像
trunk
libs
python
utilities
projects
projA
projB
佈局當我們的節目的正式運行完成後,我們要記錄使用的是什麼版本的代碼。對於我們的C++可執行文件,事情很簡單,因爲只要工作副本在編譯時是乾淨的,一切都很好。 (由於我們通過編程獲得版本號,它必須是工作副本,而不是導出。)對於Python腳本,事情更復雜。
問題是,通常一個項目(例如projA)將會運行,而projB將需要更新。這可能會導致工作副本修訂在運行時出現混合到projA。 (該代碼需要時間來運行,並且可以被用作輸入,用於稱取天運行,因此強可追溯性目標的過程。)
我的當前的解決方法是,如果必要的話,檢查出中繼線的另一拷貝到不同的位置,並跑到那裏。但是,我需要記住將PYTHONPATH改爲指向lib/python的第二個版本,而不是第一個樹中的那個。
這不可能有完美的答案。但是一定有更好的辦法。
我們是否應該使用subversion關鍵字來存儲版本號,以便數據用戶導出文件?我們應該使用virtualenv嗎?我們是否應該更多地採用包裝和安裝機制? Setuptools是標準的,但我已經閱讀了有關它的各種各樣的東西,它似乎是爲非開發人員最終用戶(我們沒有)最終用戶設計的。
你是說你正在改變你的生產庫,而直播代碼使用它們嗎? – 2009-11-07 01:01:41
我在說可能會發生這種情況。當我正在執行程序的正式運行時,發生了類似的事情。我沒有更改當前使用的工作副本中的任何代碼,但svn不知道,所以它說它是一個混合存儲庫。我的跑步拋出了一個例外,因爲它應該。由於項目中的大多數人不關心使用乾淨的副本,我希望儘可能不可能做出這樣的可能性。 – AFoglia 2009-11-07 23:38:25