在我们公司,我们有一个非常好的系统设置,用于跟踪我们当前桌面应用程序开发(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