Как структурировать проекты Python с общими вспомогательными приложениями, используя git и buidout без символических ссылок

У меня есть несколько проектов, которые совместно используют дочерние приложения с другими проектами. При работе в каталоге project я хочу иметь возможность вносить изменения в приложение, обновлять его и переносить эти обновления во второй проект. .

Требование:

  • Не используются символические ссылки (отладчик моей 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-submodules; Недостатком является то, что нет возможности сослаться на подпапку репо. Недавно я прочитал о поддереве, будет ли это работать лучше?

В идеале я хотел бы использовать buildout, но я не нашел хорошего способа сделать это без использования символических ссылок. Если есть способ сделать это, пожалуйста, дайте мне знать.

Любые предложения будут ценны.


person Kyle Finley    schedule 21.08.2011    source источник


Ответы (1)


г-н.разработчик. Когда исходный код mr.developer извлекается и активируется, он становится ссылкой setuptools/распределить яйцо разработки в сборке, поэтому проверка будет использоваться любыми скриптами (например, интерпретатором Python, сгенерированным zc.recipe.egg) в сборке.

person Ross Patterson    schedule 21.08.2011
comment
позволяет ли mr.developer работать напрямую с исходным кодом? Или есть этап компиляции? Если возможно, я хотел бы работать непосредственно над app без перекомпиляции после каждого изменения. - person Kyle Finley; 21.08.2011
comment
спасибо за ваш ответ и ссылку, я все еще пытаюсь понять, что именно они говорят. Под «шагом компиляции» я подразумеваю повторную сборку. Нужно ли перезапускать buildout после каждого изменения? Если это уместно, это для проекта движка приложения, поэтому исходный код, например. app_one должен находиться в каталоге project_one/apps - person Kyle Finley; 22.08.2011
comment
Вам нужно повторно запустить сборку, только если вы измените, какие яйца активированы/в режиме разработки. IOW, пока все яйца, в которые вы вносите изменения в код, уже активированы, вам не нужно повторно запускать buildout. Это именно для чего предназначен mr.developer. Имейте в виду, что некоторые изменения в setup.py, такие как добавление новых зависимостей, потребуют повторного запуска buildout. - person Ross Patterson; 22.08.2011
comment
@Kyle: обратите внимание, что у mr.developer есть команда update, которая обновит все каталоги системы управления версиями, находящиеся под ее контролем. bin/develop up совпадает с git pull, svn up и т. д. во всех ваших зависимостях, управляемых mr.developer. - person Martijn Pieters; 22.08.2011