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.)

È stato utile?

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!

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top