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

93

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

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

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

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

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

Теги:
pip
dependencies

1 ответ

91
Лучший ответ

Да, 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

Ещё вопросы

Сообщество Overcoder
Наверх
Меню