2016-06-18 18 views
10

I documenti di app riutilizzabili (https://docs.djangoproject.com/en/1.9/intro/reusable-apps/) indicano di elencare modelli e file statici in MANIFEST.in, ma non sembra che python setup.py bdist_wheel analizzi il file.Come posso creare una ruota da un'app django?

Ho visto i riferimenti a data_files ma tali file andare nelle directory relativa all'installazione python (sys.prefix) e non l'installazione del pacchetto (e sys.prefix non è uniformemente legato alla site-packages attraverso i sistemi).

Ho ragione nel ritenere che myapp/templates/myapp/foo.html dovrebbe finire in .../site-packages/myapp/templates/myapp/foo.html e allo stesso modo per i file statici, e che l'utente ha la necessità di eseguire un manage.py collectstatic dopo pip install myapp?

Update (esempio):

La seguente struttura:

(build2) go|c:\srv\tmp\myapp> tree 
. 
|-- MANIFEST.in 
|-- myapp 
| |-- static 
| | `-- myapp 
| |  `-- foo.css 
| |-- templates 
| | `-- myapp 
| |  `-- foo.html 
| |-- urls.py 
| `-- views.py 
`-- setup.py 

5 directories, 6 files 

setup.py

import setuptools 
from distutils.core import setup 
setup(
    name='myapp', 
    version='0.1.0', 
    packages=['myapp'] 
) 

MANIFEST.in

recursive-include myapp/templates * 
recursive-include myapp/static * 

esecuzione python setup.py sdist e python setup.py bdist_wheel crea i seguenti file bin frontend/dist:

2016-06-18 13:47    2,073 myapp-0.1.0-py2-none-any.whl 
2016-06-18 13:46    2,493 myapp-0.1.0.zip 

se si guarda dentro il file .zip, troverete i modelli e le cartelle statiche, se si rinomina il file .zip e .whl a guardare al suo interno , le directory non sono incluse.

Aggiornamento 2 (soluzione):

Modifica del file MANIFEST.in a

recursive-include myapp * 

e setup.py per

from setuptools import find_packages, setup 
setup(
    name='myapp', 
    version='0.1.0', 
    include_package_data=True, 
    packages=['myapp'], 
    zip_safe=False, 
) 

poi correre python setup.py bdist_wheel creerà un file .whl che installa myapp/templates e myapp/static nei luoghi previsti.

+0

puoi mostrare un MCSE del tuo problema? Che cosa hai provato in 'MANIFEST.in' e' setup.py'? – zmo

+0

@zmo certamente. – thebjorn

+3

@thebjorn, un peccato per la taglia, ma probabilmente dovresti rispondere alla tua stessa domanda! – Doddie

risposta

1

Il file MANIFEST.in deve essere cambiato in:

recursive-include myapp * 

Questo include tutto sotto myapp/myapp con i percorsi corretti. In particolare, questo include myapp/myapp/templates, che è necessario.

La dichiarazione di cui sopra include anche myapp/myapp/static che potrebbe essere utile se si prevede di eseguire manage.py collectstatic dopo aver installato il file .whl.

In setup.py, la funzione setup deve essere importata da setuptools (e non da distutils), ad es.:

from setuptools import find_packages, setup 
setup(
    name='myapp', 
    version='0.1.0', 
    include_package_data=True, 
    packages=['myapp'], 
    zip_safe=False, 
) 

Quando ora gestito python setup.py bdist_wheel verrà creato un file di .whl che installa myapp/templates e myapp/static nei luoghi previsti.

Problemi correlati