Как я могу установить свой проект из исходного кода с помощью Buildout?

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

Изменить:

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

[buildout]
develop = .
parts = fbt

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

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


person aknuds1    schedule 18.04.2011    source источник


Ответы (2)


У вас есть 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/ и добавит его в параметр сборки 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 для поиска яйца, при условии, что оно не может найти яйцо в другом месте.

person Martijn Pieters    schedule 18.04.2011
comment
Я думаю, что первый вариант вполне может удовлетворить мои потребности, так как я могу просто проверить проект прямо в каталоге установки. Я собираюсь попробовать. Однако ранее у меня были некоторые проблемы с опцией разработки, поскольку Buildout все еще жаловался, что не находит мой дистрибутив в PyPI. - person aknuds1; 19.04.2011
comment
@aknuds1: есть разговор об использовании buildout для разработки пакетов, который может содержать дополнительные советы. - person Martijn Pieters; 19.04.2011
comment
Вашего первого buildout.cfg недостаточно. Для сборки требуется раздел [parts] в buildout.cfg: «Ошибка: отсутствует параметр: buildout:parts». - person aknuds1; 19.04.2011
comment
@ aknuds1: все примеры показывают только параметры, относящиеся к конкретной технике, и не являются полными файлами buildout.cfg. См. доклад, на который я ссылался, для получения дополнительной информации об использовании buildout. - person Martijn Pieters; 19.04.2011
comment
Nota Bene: это extensions, а не extension в разделе [buildout]!!! (см. github.com/fschulze/mr.developer#usage) - person zmo; 05.06.2012
comment
@Martijn Pieters: я прочитал вашу страницу, мне не хватает информации, которую вы дали в качестве ответа в stackoverflow о возможности привязки ее к определенной версии (поэтому нет необходимости в самой новой = false), см. stackoverflow.com/ вопросы/6402774/ - person michel.iamit; 23.08.2013
comment
Яйца разработки используются независимо от пинов версии. - person Martijn Pieters; 23.08.2013

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

Видеть

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

person Andreas Jung    schedule 18.04.2011
comment
Однако директива разработки установила бы яйцо разработки моего дистрибутива, я прав? Я хочу установить обычное яйцо, а не разработку. Похоже, что mr.developer может быть тем, что мне нужно; Я смотрел на это раньше, но решил, что это должно быть излишним для моего простого случая. Может быть, это не так. Я попробую и посмотрю, делает ли это то, что мне нужно. - person aknuds1; 18.04.2011