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

95

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

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

Я делаю предположение, что MANIFEST.inи setup.pyявляются единственными необходимыми частями, которые необходимы pip для выполнения своей работы. Это правильно? Какие еще компоненты необходимы, если мое предположение неверно?

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

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

Джош Смитон
источник

Ответы:

88

Да MANIFEST.inи setup.pyдолжно хватить.

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

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

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

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

Например:

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

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

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


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

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

Arie
источник
4
Также теперь есть часть, объясняющая, как упаковать приложение Django в официальную документацию
Пьер де ЛЕСПИНАЙ,