2012-12-27 13 views
5

Próbuję utworzyć pakiet python dla aplikacji webapp (opartej na kolbie) i chciałbym, aby niektóre pliki zostały zainstalowane w znanym katalogu.Jak poprawnie spakować aplikację flaską przy użyciu plików statycznych

Na przykład, kolba próbuje znaleźć katalogi templates i static wewnątrz bieżącego pakietu podczas uruchamiania zintegrowanego serwera (opartego na wklejeniu). Ale w produkcji wolałbym te katalogi zainstalowane w bardziej specyficznym miejscu, takim jak virtualenv/share/package-name/{static,templates}. W przeciwnym razie byłyby one gdzieś poniżej lib/python-2.x/..., co nie wydaje się właściwe.

Próbowałem zainstalować pliki przy użyciu parametru data_files w setup.py, ale to nie wydaje się być przydatne dla całych drzew (error: can't copy 'xxx': doesn't exist or not a regular file).

Jakie jest właściwe rozwiązanie w tej sytuacji?

+0

To bardzo mi pomogło w pakowaniu mojej aplikacji Flask: http://flask.pocoo.org/docs/patterns/distribute/#basic-setup-script –

+0

Widziałem to. Niestety po prostu kopiują pakiet wraz z plikami danych. Robię to teraz, ale naprawdę chciałbym przestać. Po prostu nie lubię wskazywać mojego serwera na '/ home/xxx_webapp/venv/lib/python2.7/site-packages/xxx-1.0dev-py2.7.egg/xxx/static /'. Wolałbym użyć czegoś takiego jak '/ home/xxx_webapp/venv/share/xxx/static /' – viraptor

+0

Dlaczego próbujesz wyświetlać pliki statyczne za pomocą czegoś innego, niż zapewnia funkcja kolby? –

Odpowiedz

3

Co można zrobić, to spakować wirtualne pliki env i statyczne do pakietu macierzystego (.deb lub .rpm), a następnie umieścić je w dowolnym miejscu. Napisałem wpis na blogu na ten temat: here. Wykorzystuje poręczny gem niewiele rubinowy nazwie fpm i chociaż nie oddzielić moje statyczne pliki z mojego pakietu python byłbyś w stanie dodając kolejną odwzorowanie ścieżki na końcu polecenia FPM jak tak

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> 

Można użyć fpm, aby określić inne pliki konfiguracyjne, takie jak twoja konfiguracja nginx itp. Ale to zależy od ciebie i może oznaczać, że twoje rozmieszczenie jest trochę mniej elastyczne.

Nadzieję, że pomaga!

-1

Pakiety narzędziowe Pythona nie są do tego przeznaczone. Kopiowanie statycznych plików do katalogu głównego nginx 'lub Apache'a byłoby zadaniem dla skryptów wdrażania, które mogłyby być napisane przy użyciu Fabric.

Powiązane problemy