Чем установка pip с использованием git отличается от простого клонирования репозитория? - PullRequest
13 голосов
/ 11 сентября 2010

Я новичок в Django, и у меня возникают проблемы с установкой django-basic-apps с помощью pip.

Если я сделаю это ...

$ cat requirements.txt 
git+git://github.com/nathanborror/django-basic-apps.git

$ pip install -r requirements.txt

Я получу lib/python2.6/site-packages/basic/blog, который НЕ имеет каталога шаблонов.

Если я сделаю это ...

git clone http://github.com/nathanborror/django-basic-apps.git

Я получаю копию basic/blog, в которой есть каталог шаблонов.

Я подозреваю, что что-то с django-basic-apps или pip не позволяет установить его через pip,Я подумал, что, возможно, чтение django-basic-apps setup.py приведет меня к ответу, но я его не вижу.

(я должен добавить, что если я установлю без использования pip, я смогуполучить django-basic-apps работает просто отлично.)

1 Ответ

25 голосов
/ 11 сентября 2010

Когда вы используете «pip» для установки чего-либо, пакет setup.py используется для определения того, какие пакеты установить.И setup.py этого проекта, если я правильно его читаю, говорит "просто установите эти пакеты Python внутри директории basic" - setup.py не делает абсолютно никаких упоминаний о любых не-Python файлах, которые он хочет включить в установку.

Это может быть преднамеренным с точки зрения разработчика, поскольку для пакетов Django является традицией не включать шаблоны - как известно, даже такая базовая вещь, как встроенная django.contrib.auth, поставляется без каких-либо шаблонов изаставляет вас строить свои маленькие формы с нуля каждый раз!(Или вырезать и вставлять примеры из других мест в Интернете.)

Но если вы сами хотите, чтобы шаблоны устанавливались с этим дистрибутивом Python, независимо от того, как автор их настраивал, просто перечислитешаблоны в setup.py!Сначала добавьте что-то подобное в файл setup.py:

template_patterns = [
    'templates/*.html',
    'templates/*/*.html',
    'templates/*/*/*.html',
    ]

Затем добавьте одну последнюю переменную к вызову setup(), чтобы она заканчивалась следующим образом:

...
packages=packages,
package_data=dict( (package_name, template_patterns)
                   for package_name in packages ))

Это подтверждает функцию setup(), что каждый пакет должен сопровождаться файлами данных, найденными путем поиска файлов HTML в каталоге templates каждого пакета.

Попробуйте, и дайте мне знать, если это работаетна твоей машине тоже!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...