2012-12-27 9 views
5

Sto cercando di creare un pacchetto python per una webapp (basata su flask) e mi piacerebbe ottenere alcuni file installati in una directory conosciuta.Come pacchettizzare correttamente l'applicazione con i file statici

Ad esempio, il pallone tenta di trovare le directory templates e static all'interno del pacchetto corrente quando esegue il server integrato (basato su paste). Ma in produzione preferirei quelle directory installate in un posto più specifico come virtualenv/share/package-name/{static,templates}. Altrimenti sarebbero da qualche parte sotto lib/python-2.x/... che non sembra appropriato.

Ho provato a installare i file utilizzando il parametro data_files in setup.py, ma ciò non sembra essere utile per alberi interi (error: can't copy 'xxx': doesn't exist or not a regular file).

Qual è la soluzione corretta in questa situazione?

+0

Questo mi ha aiutato molto con la confezione della mia app Flask: http://flask.pocoo.org/docs/patterns/distribute/#basic-setup-script –

+0

L'ho visto. Sfortunatamente copiano semplicemente il pacchetto insieme ai file di dati. Lo sto facendo ora, ma mi piacerebbe davvero fermarmi. Semplicemente non mi piace puntare il mio webserver su/home/xxx_webapp/venv/lib/python2.7/site-packages/xxx-1.0dev-py2.7.egg/xxx/static/'. Preferisco usare qualcosa come '/ home/xxx_webapp/venv/share/xxx/static /' – viraptor

+0

Perché stai cercando di servire i file statici con qualcosa di diverso da quello fornito dal pallone delle funzionalità? –

risposta

3

Ciò che si potrebbe fare è impacchettare i file virtuali env e statici in un pacchetto nativo (.deb o .rpm) e quindi posizionarli ovunque si desideri. Ho scritto un post sul blog su questo here. Esso utilizza un pratico gioiello po rubino chiamato fpm e anche se io non separare i miei file statici dal mio pacchetto python si sarebbe in grado di aggiungendo un altro mappatura sentiero sulla fine del comando FPM in questo modo

fpm -s dir -t deb -n food-truck -v 0.1 -d "python,python-dev,postgresql" /home/ubuntu/food_truck-build/=/home/ubuntu/foodtruck.com <path to static files>=<destination of static files> 

si potrebbe usare fpm per specificare altri file di configurazione come il tuo nginx config ecc. Ma questo dipende da te, e potrebbe significare che la tua implementazione è un po 'meno flessibile.

Spero che questo aiuti!

-1

Le utilità di impacchettamento di Python non sono destinate a questo scopo. Copiare i file statici in nginx 'o root del sito di Apache sarebbe un'attività per gli script di distribuzione, che potrebbe essere scritta usando Fabric.

Problemi correlati