Как я могу установить свой проект из исходного кода с помощью Buildout? - PullRequest
7 голосов
/ 18 апреля 2011

Я хочу использовать Buildout для установки моего Распространения проекта и его зависимостей в изолированную среду. Мой проект должен быть установлен прямо из исходного дерева (локальный репозиторий Git) и не зарегистрирован в PyPI. Как мне это сделать?

Edit:

Благодаря М. Питерсу я смог выяснить, что делать. Я публикую свой buildout.cfg для справки:

[buildout]
develop = .
parts = fbt

[fbt]
recipe = z3c.recipe.scripts
eggs = BuildTools

Хотя мне это и не нужно было прямо сейчас, знание mr.developer определенно может пригодиться в будущем.

Ответы [ 2 ]

12 голосов
/ 18 апреля 2011

У вас есть 3 варианта, в зависимости от того, где вы хотите, чтобы ваша конфигурация компоновки использовалась, и какие опции вы должны проверить в своем git-репозитории.

Обратите внимание, что для Python полученное яйцо точнотот же самый.Единственное различие между яйцом разработки и «нормальным» яйцом заключается в том, что яйцо разработки отменяет любые требования к версии, установленные в другом месте для этого яйца;он будет использоваться независимо от того, какие другие версии яйца находятся в других местах.

Внутри хранилища разработки

Просто используйте параметр develop.Это создает яйцо разработки, которое точно так же, как и обычное яйцо, но без проверки версии, ни больше, ни меньше.

Ваша сборка просто должна перечислить текущий каталог (где живет setup.py) какяйцо разработки:

[buildout]
develop = .

В другом месте

Для этого вам нужно будет получить доступ к хранилищу git, чтобы создать новую проверку.Используйте mr.developer , чтобы вставить свой репозиторий git и автоматически пометить его как яйцо для разработки:

[buildout]
extensions = mr.developer
auto-checkout = package.name

[sources]
package.name = git url/to/package.name.git

При такой настройке mr.developer автоматически извлечет репозиторий git дляПодкаталог src/ и добавьте его в опцию buildout develop.

Использование загрузки из архива

В таких местах, как github.com, также есть возможность загрузить архив с текущим содержимымрепозиторий.Вы можете использовать это для загрузки этого тарбола в качестве источника яйца с опцией find-links:

[buildout]
find-links = http://github.com/yourname/package.name/tarball/version#egg=package.name-versionnumber
eggs = package.name

Затем Buildout будет использовать эту конкретную запись find-links для поиска яйца, при условии, что не сможет найти яйцо в другом месте.

3 голосов
/ 18 апреля 2011

Вы легко можете использовать Buildout с извлечением из хранилища, используя директиву develop zc.buildout или используя расширение сборки mr.developer, где вы можете определить пакеты, которые будут извлекаться непосредственно из заданного URL хранилища (поддерживает git, svn и другие системы контроля версий).

См

http://pypi.python.org/pypi/mr.developer

...