Comment est pip installer en utilisant différents git qu'un simple clonage d'un dépôt?
Question
Je suis un débutant avec Django et je vais avoir du mal à django-Installation-base des applications en utilisant pip.
Si je fais ça ...
$ cat requirements.txt
git+git://github.com/nathanborror/django-basic-apps.git
$ pip install -r requirements.txt
je finis avec lib/python2.6/site-packages/basic/blog
qui ne dispose pas d'un répertoire de modèles.
Si je fais ça ...
git clone http://github.com/nathanborror/django-basic-apps.git
je me retrouve avec une copie de basic/blog
qui a un répertoire de modèles.
Je soupçonne que quelque chose au sujet django-basic-apps
ou pip rend pas pu être installé via pip. Je pensais que peut-être lire la django-basic-apps
de setup.py
me conduire à la réponse, mais je ne pouvais pas le voir.
(Je dois ajouter que si je, sans utiliser pip, je suis en mesure d'obtenir django-basic-apps
fonctionne très bien.)
La solution
Lorsque vous utilisez « pépin » pour installer quelque chose, est utilisé le setup.py
du paquet pour déterminer quels sont les paquets à installer. Et ce le setup.py
de projet, si je lis correctement, dit « il suffit d'installer ces paquets Python à l'intérieur du répertoire basic
. » - le setup.py
fait absolument aucune mention de tous les fichiers non-Python, il veut inclus dans l'installation
Cela pourrait être délibéré de la part du développeur, car il est quelque chose d'une tradition pour les packages de Django pour ne pas inclure des modèles - notoirement, même quelque chose d'aussi fondamental que le haut-django.contrib.auth
vient sans modèles et vous fait construire ses petites formes à partir du sol à chaque fois! (Ou, pour couper et coller des exemples ailleurs sur le Web.)
Mais si vous vous voulez que les modèles à installer cette distribution Python, quelle que soit la façon dont l'auteur a configuré les choses, alors que la liste des modèles dans le setup.py
! Tout d'abord, ajouter quelque chose comme ceci dans le fichier setup.py
:
template_patterns = [
'templates/*.html',
'templates/*/*.html',
'templates/*/*/*.html',
]
Ensuite, ajoutez une dernière variable à l'appel setup()
afin qu'elle se termine comme ceci:
...
packages=packages,
package_data=dict( (package_name, template_patterns)
for package_name in packages ))
affirme à la fonction setup()
que chaque paquet doit être accompagné par des fichiers de données qui sont trouvés par la recherche de fichiers HTML sous le répertoire templates
de chaque paquet.
Essayez-le et laissez-moi savoir si cela fonctionne sur votre machine aussi!