在我們公司,我們有一個非常好的系統設置,用於跟蹤我們當前桌面應用程序開發(C++/python)版本控制中的外部程序包依賴關係。我們正在開發一些python只有web應用程序正在尋找最佳實踐的建議,因爲只涉及python代碼,它來自easy_install可用包。在項目VCS中保持Python GAE依賴關係的最佳實踐
對於我們的桌面應用程序,我們有這樣的事情:
app_svn_root
- trunk
- src
- doc
- deps -> [svn:external to deps repos with rev num set]
deps_svn_root
- trunk
- setup_env.sh/bat [generated automatically
- dep_project_1 [example: boost, libxml, python, etc]
- vendor_base [svn:external to vendor branch or project repository]
- install_linux_gcc43
- bin
- include
- lib
- install_linux_win32_vc90
- ... [whatever directory structure the project build creates]
當上球隊的任何開發者檢出應用程序的代碼,它們會自動得到所有的依賴關係,並用正確的版本爲讓他們修改代碼。 [注:有幾個內部管理腳本等,我忽略了,但這是一般的想法]。這對我們非常有用。沒有開發人員需要擔心每個包含正確版本的個人機器,它允許一次檢出多個開發副本(例如:1.0,1.1,2.0等),它允許持續集成系統來打包依賴關係,並使用正確版本的Deps運行單元測試。
現在我們開始在一些基於python項目的谷歌應用程序引擎上工作,我們希望像上面這樣。我們希望讓開發人員能夠立即檢查他們需要的所有內容,並確保每個人都使用相同的依賴關係。我們可以繼續使用這個確切的結構,但是對於一個純粹的python項目來說它似乎很重。
本來我想的是這樣的:
- trunk
- gae_apps
- gae_sdk [svn:external to the latest stable GAE code]
- deps
- nose
- nosegae
- pylint
- app1
- templates
- tests
- deps
- webapp2
- console
我遇到的問題是,所有的Python項目,我想使用(鼻,nosegae等),建議使用easy_install
下載和安裝他們。儘管如此,這將它們安裝到主系統目錄中。我真正想要的是將代碼安裝到每個包的特定目錄中。 (注意:我打算在main.py中添加一些代碼,以便將所有軟件包以正確的順序添加到sys.path中)。有沒有辦法做到這一點?這是一個好主意嗎?
那裏有什麼最佳實踐來跟蹤純python應用程序中的依賴關係以支持與大型團隊的開發?
注:我不認爲我可以使用virtualenv。第一個原因是它不適用於nosegae。 (請參閱:http://code.google.com/p/nose-gae/issues/detail?id = 11),其次是我認爲它打破了我的目標,因此開發團隊可以簡單地檢查存儲庫,並擁有一切,然後需要運行。 (即我不認爲你可以將Virtualenv提交給VCS)。請告訴我,如果我錯了。 :) – Allen 2010-09-12 13:46:29