Come si installa pip usando git diverso di un semplice clonare un repository?
Domanda
Sono un principiante con Django e sto avendo problemi con l'installazione django-base-app mediante pip.
Se faccio questo ...
$ cat requirements.txt
git+git://github.com/nathanborror/django-basic-apps.git
$ pip install -r requirements.txt
io alla fine con lib/python2.6/site-packages/basic/blog
che non dispone di una directory templates.
Se faccio questo ...
git clone http://github.com/nathanborror/django-basic-apps.git
I finire con una copia di basic/blog
che ha una directory templates.
Ho il sospetto che qualcosa circa django-basic-apps
o pip lo rende non in grado di essere installato tramite pip. Ho pensato che forse la lettura di django-basic-apps
setup.py
mi porterebbe alla risposta, ma non riuscivo a vederlo.
(Dovrei aggiungere che se installo senza l'utilizzo di pip, io sono in grado di ottenere django-basic-apps
lavorando bene.)
Soluzione
Quando si utilizza "PIP" per installare qualcosa, setup.py
del pacchetto viene utilizzato per determinare quali pacchetti installare. E setup.py
di questo progetto, se sto leggendo correttamente, dice "basta installare questi pacchetti Python all'interno della directory basic
" -. Il setup.py
fa assolutamente alcuna menzione di qualsiasi non-Python file che vuole inclusa nel install
Questo potrebbe essere deliberata da parte dello sviluppatore, dal momento che è una sorta di tradizione per i pacchetti Django di non includere i modelli - notoriamente, anche qualcosa di così fondamentale come il built-in django.contrib.auth
arriva senza modelli e ti fa costruire le sue piccole forme da zero ogni volta! (O, per tagliare e incollare da esempi altrove sul web.)
Ma se vi volete i modelli per essere installati con questa distribuzione Python, a prescindere da come l'autore ha impostato le cose in, poi basta elencare i modelli nella setup.py
! In primo luogo, aggiungere qualcosa di simile al file setup.py
:
template_patterns = [
'templates/*.html',
'templates/*/*.html',
'templates/*/*/*.html',
]
Quindi, aggiungere un ultima variabile alla chiamata setup()
in modo che termini in questo modo:
...
packages=packages,
package_data=dict( (package_name, template_patterns)
for package_name in packages ))
Questa afferma alla funzione setup()
che ogni pacchetto deve essere accompagnato da file di dati che si trovano con la ricerca per i file HTML sotto la directory templates
di ogni pacchetto.
Provalo, e fatemi sapere se questo funziona sulla vostra macchina troppo!