我正在开发一个django项目,使用git进行代码管理。主项目有许多应用程序作为子模块,每个子模块可以独立使用,因此每个都在单独的git存储库中。所有这些应用程序都在开发中,至少有一个是从另一个项目分叉的。这些应用程序可以通过pip安装,在克隆repo时,根目录中有setup.py和README等,然后是子文件夹中的实际应用程序。
如果我pip安装应用程序,那么工作代码将位于git管理下的文件夹的不同位置,所以每次我更改代码时我都需要pip install
(或者是有另一个pip命令吗?)更新python正在寻找它的代码
我可以使用pip install -e
来阻止上述情况。但是,我需要将每个应用程序克隆到单独的文件夹中:我不能将应用程序克隆到project/apps
并拥有project/apps/foo
和project/apps/bar
,因为他们都会尝试删除setup.py进入project/apps
。相反,我需要将foo克隆到project/apps/foo
,但实际代码在project/apps/foo/foo
。这让我感到丑陋而且不是非常django-ish。
还有其他一些更漂亮的方法可以做我想做的事吗?
答案 0 :(得分:3)
我认为您真正想要使用的是requirements file(而不是使用git子模块)和项目的virtualenv。
使用需求文件,您可以直接从给定分支或提交中克隆repos,例如:
requirements.txt:
Django==1.4.1
South==0.7.6
git+git://github.com/fabric/fabric#egg=Fabric
git+git://github.com/toastdriven/django-tastypie.git@876c0541e2531d3b6e070ffab906f7c6e359c427#egg=django-tastypie
然后你可以运行pip install -r requirements.txt
。
你会从tastypie示例中注意到你可以将你的pip安装锁定到一个特定的提交(只要你留在你的virtualenv就好了),这与子模块无论如何都是一样的,但是没有混乱你的git包含repo或文件结构时,如果它们确实应该安装到您提供的单独位置。