如何在没有符号链接的情况下,使用git和buidout构建具有共享子应用程序的python项目

如何在没有符号链接的情况下,使用git和buidout构建具有共享子应用程序的python项目,python,git,git-submodules,buildout,git-subtree,Python,Git,Git Submodules,Buildout,Git Subtree,我有多个项目与其他项目共享子应用程序。 在项目目录中工作时,我希望能够对应用程序进行更改、更新,并将这些更新拉入第二个项目 要求: 没有使用符号链接(我的IDE的调试器不能很好地使用它们) 没有编译/重新运行脚本。我想对应用程序进行更改,而无需重新运行脚本/构建 应用程序必须位于项目文件夹中 结构如下: app_one (git repo) |-- app_one (actual app uses by projects) | +-- models.py |-- README

我有多个项目与其他项目共享子应用程序。 在项目目录中工作时,我希望能够对应用程序进行更改、更新,并将这些更新拉入第二个项目

要求:

  • 没有使用符号链接(我的IDE的调试器不能很好地使用它们)
  • 没有编译/重新运行脚本。我想对应用程序进行更改,而无需重新运行脚本/构建
  • 应用程序必须位于项目文件夹中
结构如下:

app_one (git repo)
  |-- app_one (actual app uses by projects)
  |   +-- models.py
  |-- README.md
  +-- setup.py

project_one  (git repo)
  |-- project_one
  |   |-- apps
  |   |   |-- app_one
  |   |   |   +-- models.py
  |   |   | -- app_two
  |-- setup.cfg
  +-- setup.py

project_two  (git repo)
  |-- project_two
  |   |-- apps
  |   |   |-- app_one (same app as project_one)
  |   |   |   +-- models.py
  |   |   | -- app_two
  |-- setup.cfg
  +-- setup.py
目前我正在为此使用git子模块;缺点是无法链接到回购协议的子文件夹。我最近读到关于子树的文章,这会更好吗

理想情况下,我希望使用构建,但我还没有找到一种不使用符号链接的好方法来实现这一点。如果有办法,请告诉我


如有任何建议,将不胜感激。

。签出并激活mr.developer源代码后,它将成为构建中的setuptools/,因此签出将由构建中的任何脚本(如zc.recipe.egg生成的python解释器)使用。

mr.developer是否允许您直接使用源代码?还是有编译步骤?如果可能的话,我想直接使用
应用程序
,而不必在每次更改后重新编译。感谢您的回复和链接,我仍在努力准确地理解他们在说什么。通过“编译步骤”重新运行构建。每次更改后是否需要重新运行buildout?如果相关,这适用于应用程序引擎项目,因此源代码(例如,
app\u one
)必须位于
project\u one/apps
目录中。仅当您更改激活/处于开发模式的代码时,才需要重新运行buildout。注意,只要您对其进行代码更改的所有鸡蛋都已激活,就不需要重新运行buildout。这正是开发商先生的用意。请记住,某些setup.py更改(例如添加新的依赖项)需要重新运行buildout。@Kyle:请注意,mr.developer有一个
update
命令,该命令将更新其控制下的所有源代码管理目录
bin/development up
与所有mr.developer管理的依赖项中的git pull、
svn up
等相同。