Как мне упаковать приложение на python, чтобы оно могло быть установлено с помощью pip? - PullRequest
95 голосов
/ 19 марта 2011

Я пишу приложение django в свое свободное время для соревнований, которые мы проводим на работе.Я подумал, что буду использовать это время с умом и быстро освоить virtualenv, pip, package, django 1.3 и то, как написать легко распространяемое приложение.Пока все хорошо.

Я до упаковочной части.Например, многие приложения django на GitHub в основном связаны (примерно) одинаково.Я буду использовать django-uni-формы в качестве примера.

Я предполагаю, что MANIFEST.in и setup.py - это единственные необходимые части, которые нужны пипсуделай свою работуЭто верно?Какие другие компоненты необходимы, если мое предположение неверно?

Обычно генерируются необходимые файлы упаковки или они создаются вручную?Могут ли быть описаны зависимости, а затем также установлены?Мое приложение зависит от django-uni-forms, и оно указано в файле requirements.txt моего приложения, которое я использовал для установки зависимости;но может ли эта система упаковки позаботиться о ней?

Какие шаги мне нужно выполнить, чтобы упаковать свое приложение таким образом, чтобы pip смог его установить и какие-либо зависимости?

1 Ответ

88 голосов
/ 19 марта 2011

Да, MANIFEST.in и setup.py должно быть достаточно.

Это сообщение в блоге действительно содержит полезную информацию по этой теме: Упаковка многоразового приложения Django

А вот еще один хороший подробный обзор, который мне очень помог: Руководство пользователя по Python Packaging

Особенно важны советы по включению статических файлов (шаблонов), так как это может быть неочевидносначала.

И да, вы можете указать необходимые пакеты в вашем setup.py, которые автоматически выбираются при установке вашего приложения.

Например:

    install_requires = [
        'django-profiles',
        'django-uni-forms',
    ],

Очевидно,теперь у нас есть два места, где определяются зависимости, но это не обязательно означает, что эта информация дублируется: setup.py vs needs.txt

При такой настройке ваш пакет должен быть установленчерез pip.


Как отметил Пьер в комментариях, теперь в официальной документации Django есть также соответствующий раздел: Упаковкаr app

И вот еще одно «совершенно неполное» руководство, которое действительно дает отличный обзор упаковки и загрузки пакета в PyPI: Делитесь своим трудом любви: PyPI Quick And Dirty

...