Re: [python] Django a debianí balí?kovací systém
2016-07-14 10:06 GMT+02:00 Pavel Schön : > > Není náhoda, že když jsi hledal nějaký Django projekt zabalený jako > balíček pro Debian, tak jsi nic moc nenašel. > > Jeden jsem našel, bohužel nefunguje. ( > https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=809746 ) > > > Není náhoda, že když jsi hledal nějaký Django projekt zabalený jako > balíček pro Debian, tak jsi nic moc nenašel. > > Protože kdyby Debian měl přebírat každou "blbost" z PyPi, tak je zahlcen > tisíci neužitečnými balíčky. Ty nejlepší jsou samozřejmě k dispoziti i v > Debianu. Osobně preferuju instalaci z apt, pip beru až jako poslední > možnost. > Je škoda, že mezi těmi nejlepšími není třeba to Django. V Debianu stable je několik let stará verze, a když chce člověk aktuální, nezbývá než alternativní apt repozitáře, s kdo ví jakými bezpečnostními riziky. A další pythonní balíčky jsou na tom podobně, pokud tam vůbec jsou. Při standardní instalaci z PyPI je jistota okamžité dostupnosti aktuálních verzí a bezpečnostních aktualizací. > > Proč bys v prvé řadě chtěl z univerzálního Pythonního projektu dělat > balíček > specifický pro nějakou linuxovou distribuci? > > Třeba protože jej chce doručit do mainline Debian nebo má na lokální síti > apt repository. Nebo prostě jej chce instalovat pomocí dpkg -i, což je > naprosto legitimní způsob. > Proti gustu žádný dišputát :-) > ___ > Python mailing list > python@py.cz > http://www.py.cz/mailman/listinfo/python > > Visit: http://www.py.cz > ___ Python mailing list python@py.cz http://www.py.cz/mailman/listinfo/python Visit: http://www.py.cz
Re: [python] Django a debianí balí?kovací systém
> Není náhoda, že když jsi hledal nějaký Django projekt zabalený jako balíček > pro Debian, tak jsi nic moc nenašel. Jeden jsem našel, bohužel nefunguje. ( https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=809746 ) > Není náhoda, že když jsi hledal nějaký Django projekt zabalený jako balíček > pro Debian, tak jsi nic moc nenašel. Protože kdyby Debian měl přebírat každou "blbost" z PyPi, tak je zahlcen tisíci neužitečnými balíčky. Ty nejlepší jsou samozřejmě k dispoziti i v Debianu. Osobně preferuju instalaci z apt, pip beru až jako poslední možnost. > Proč bys v prvé řadě chtěl z univerzálního Pythonního projektu dělat balíček > > specifický pro nějakou linuxovou distribuci? Třeba protože jej chce doručit do mainline Debian nebo má na lokální síti apt repository. Nebo prostě jej chce instalovat pomocí dpkg -i, což je naprosto legitimní způsob. ___ Python mailing list python@py.cz http://www.py.cz/mailman/listinfo/python Visit: http://www.py.cz
Re: [python] Django a debianí balí?kovací systém
On 07/11/2016 10:04 PM, David Rohleder wrote: Petr Viktorin píše v Po 11. 07. 2016 v 21:31 +0200: problém je v tom, že takto django moc nefunguje a zatím musí mít člověk minimálně dva adresáře - jeden se samotným djangem (settings.py a spol.) a další se samotnou aplikací. Ví někdo, jak se správně vyrábí django balík pro nějakou linuxovou distribuci (debian, RH)? Případně jak na to? Nerad bych se dopustil nějaké prasárny, která by mně do budoucnosti zkomplikovala práci. Ahoj! Já do Djanga moc nedělám a balíčkuju jen pro Fedoru, ale takhle bych to dělal já: Z každé appky můžeš vytvořit reusable appku [0], a tu zabalit zvlášť. jo. V současnosti mám ale pouze jednu appku a pokud budu psát další appku, tak budu chtít, aby byla kompletně nezávislá na ostatních django projektech. Pokud ti v "hlavním" projektu zbyla nějaká funkcionalita (models, views, templates, ...), tak vytvoř novou zvláštní reusable appku a tyhle věci dej do ní. nemělo by tam nic zbýt. V projektu ti pak zbudou jenom moduly jako settings.py, urls.py, wsgi.py, které zabal zvlášť, a všechno ostatní tomu dej jako závislosti. To by potenciálně šlo, ale osobně bych rád spíš dospěl do stavu, kdy bude settings.py (a všechno, co je iniciální součástí projektu) součástí té jedné appky a tím pádem bych měl pouze jeden adresář s celým projektem včetně té jediné appky. Problém je že ve většině projektů používáš víc než jednu appku. V appkách máš kód, v settings.py nastavuješ který kód použít, kde je databáze, a tak. Nejde to udělat tak, že každá aplikace bude separátní instance Djanga – takhle to opravdu nefunguje. Např. 'django.contrib.auth', která definuje model User, je taky appka, a spousta ostatních appek ji používá, ale nedá se dost dobře spustit sama o sobě. až tak moc jsem to samozřejmě nemyslel. django.contrib.auth je patrně appka, nicméně z mého pohledu je to součást standardní distribuce djanga - pokud nějakým způsobem sahá do databáze, tak to dělá pro každý projekt zvlášť. Jasně! Nastavení databáze nezávisí na tom, jaké appky v projektu máš. Můžeš použít jednu appku ve více projektech, s oddělenými databázemi. Já bych si to představoval následovně: Když přistupuju ke dvěma adresám http://server/app1 http://server/app2 tak bych chtěl, aby každá z těch webových adres byla oddělena na úrovni apache serveru pomocí nějakého Alias app1 /usr/share/lib/.../pythonXX/app1 ... Alias app2 /usr/share/lib/.../pythonXX/app2 ... Tohle udělat můžeš; každý takový projekt bude mít vlastní settings.py s vlastním nastavením např. databáze. Každá aplikace totiž může být: - vyvinutá pro jinou verzi djanga - vyvinutá pro jinou verzi pythonu - můžu mít dvě instance jedné aplikace, které budou používat různé databáze Navíc bych byl rád, aby bylo možné běžet různé verze djanga (kvůli různě napsaným aplikacím), čehož je možné dosáhnout pomocí virtualenv, ale to už se do toho zamotávám až příliš, pro začátek bych rád dokonvergoval do stavu jedna aplikace - jeden balík. Tady máš problém – distribuční balíčky jsou dělané pro linuxové distribuce. Distra se většinou snaží mít jednu sadu balíčků které všechny fungují dohromady. V systému je ideálně jedna jediná systémová verzi Djanga, a to je vše. Když chceš několik různých verzí Pythonu a několik Djang, systémové balíčky ti moc nepomůžou. (Ano, existují python2 a python3 nebo věci jako software collections, ale dá hodně práce něco takového vytvořit, a zvlášť s Pythoníma balíčkama jako Django to příliš dobře nefunguje.) To co chceš ty řeší virtualenv. Použij virtualenv :) Zatím mám dost pocit, že je v tomto django postaveno dost nešikovně a nikdo s reusable apps moc nepočítal. Ne, spíš nikdo nepočítal s tím že to někdo bude chtít balíčkovat přesně tak, jak to chceš zabalíčkovat ty. Nejdi proti proudu, nauč se jak so to dělá standardně (přes virtualenv), dřív než se pustíš do něčeho vlastního. Snažil jsem se podívat na nějaký django projekt zabalený jako balíček pro debian, ale zatím jsem přišel pouze na openstack dashboard, což je teda dost moloch na to, abych se v tom jednoduše vyznal. Chtěl jsem k tomu přistoupit jako ke standardnímu pythonovému řešení - vyrobit setup.py ze setuptools, pomocí nich to nainstalovat do nějakého adresáře a pak na tom adresáři spustit balíčkovací nástroje, ale zatím se zasekávám na těch minimálně dvou adresářích potřebných pro každou appku. Ten django přístup se mně v tomto případě moc nelíbí. ___ Python mailing list python@py.cz http://www.py.cz/mailman/listinfo/python Visit: http://www.py.cz
Re: [python] Django a debianí balí?kovací systém
Ahoj, virtualenv je trošku "hack" k tomu, že konkrétní aplikace obvykle potřebuje konrétní verzi modulu (knihovny) v Pythonu. A je velké nebezpečí, že pokud se změní verze knihovny, tak se aplikace "sama rozbije". Pokud provozuješ nějakou starší aplikaci (napsanou třeba před 2 lety), tak jí musíš prostě zajistit 2 roky staré verze knihoven a to řeší ten virtualenv. Nebo aplikaci musí vývojář upravit pro nové (distribuční) verze knihoven, což stojí čas a peníze. To, že tímhle postupem musíš obsluhovat bezpečnostní aktualizace knihoven sám a nemůžeš se spolehnout na distribuci, je smutný fakt. Vyber si - buď to máš rozbitý nebo to nemáš zabezpečený. :-) Alternativa je používat část knihoven z distribuce (typicky stabilní knihovny typu numpy, reportlab, psycopg) a část knihoven mít ve vlastním virtualenvu. --Věroš PS: Na Docker se zatím vykašli, ale bez virtualenv se nic většího moc vyvíjet nedá. 2016-07-11 23:22 GMT+02:00 David Rohleder : > Zdar Věroši, > > díky, to vypadá zajímavě. Mrknu na to a konečně bude nějaká příležitost > zajít na PyVo :-) > > Osobně si poslední dobou připadám jako stará struktura, takže docker > kontejnery a virtualenv jsou pro mne trochu moc novot najednou :-) > > Mimochodem - ty virtualenv mně teda přijdou jako pěkná prasárna > vzhledem k potřebám aktualizací systému a neexistující vazbě mezi > virtualenvem a systémem (z mého pohledu je to takové z nouze ctnost > řešení). > > David > > > Věroš Kaplan píše v Po 11. 07. 2016 v 22:57 +0200: > > Ahoj Davro, > > > > Velmi podobně to teď řeším - .RPM by mělo být self-contained - až na > > data. > > > > v /opt/cool-app/virtualenv je virtualenv (s vlastními verzemi > > pythonových knihoven) > > v /opt/cool-app/ je zbytek aplikace > > v /etc/systemd/.../cool-app.service je konfigurace wsgi, aby se celá > > ta aplikace spustila. > > > > A celou tuhle špinavou práci ( git repo || -> .RPM || .DEB) za mně > > dělá Jenkins jako wrapper nad fpm, tak mne existence dvou zamíchaných > > adresářů netrápí. Pro to fpm ( https://github.com/jordansissel/fpm ) > > si pouštím čisté VM (nebo dneska Docker kontejnery), takže mne > > netrápí, že v systému je nepořádek. > > > > Když zajdeš na oběd, tak to můžu ukázat. Nebo můžu udělat na nějakým > > PyVu malý talk. Jen mám pocit, že to je věc, která je známá a nkoho > > by nezajímala. > > > > Myslím, že je trošku matoucí to, že "Django app" (tedy > > znovupoužitelná komponenta pro vývojáře) je jiná věc, než to co > > považuji za "app" já, jako admin. > > > > --Věroš > > PS: Doufám, že odpovídám na správný thread a na to co se ptáš. > > > > 2016-07-11 22:13 GMT+02:00 David Rohleder : > > > David Rohleder píše v Po 11. 07. 2016 v 22:04 +0200: > > > > > > > > Chtěl jsem k tomu přistoupit jako ke standardnímu pythonovému > > > řešení > > > > - > > > > vyrobit setup.py ze setuptools, pomocí nich to nainstalovat do > > > > nějakého > > > > adresáře a pak na tom adresáři spustit balíčkovací nástroje, ale > > > > zatím > > > > se zasekávám na těch minimálně dvou adresářích potřebných pro > > > každou > > > > appku. Ten django přístup se mně v tomto případě moc nelíbí. > > > > > > > > > > > > > ještě jsem uvažoval o tom, že bych prostě tu appku celou zkopíroval > > > do > > > projektového adresáře, tj. > > > > > > $ django-admin startproject app1 > > > $ cd app1 (dostanu se do adresáře projektu) > > > $ django-admin startapp appX > > > $ mv appX/* app1 > > > > > > a tento výsledek zabalil. > > > > > > Viděl by v tom někdo nějaký problém? > > > > > > Díky > > > > > > David > > > > > > ___ > > > Python mailing list > > > python@py.cz > > > http://www.py.cz/mailman/listinfo/python > > > > > > Visit: http://www.py.cz > > > > > > > > > -- > > --V.Kaplan > > ___ > > Python mailing list > > python@py.cz > > http://www.py.cz/mailman/listinfo/python > > > > Visit: http://www.py.cz > ___ > Python mailing list > python@py.cz > http://www.py.cz/mailman/listinfo/python > > Visit: http://www.py.cz > -- --V.Kaplan ___ Python mailing list python@py.cz http://www.py.cz/mailman/listinfo/python Visit: http://www.py.cz
Re: [python] Django a debianí balí?kovací systém
Zdar Věroši, díky, to vypadá zajímavě. Mrknu na to a konečně bude nějaká příležitost zajít na PyVo :-) Osobně si poslední dobou připadám jako stará struktura, takže docker kontejnery a virtualenv jsou pro mne trochu moc novot najednou :-) Mimochodem - ty virtualenv mně teda přijdou jako pěkná prasárna vzhledem k potřebám aktualizací systému a neexistující vazbě mezi virtualenvem a systémem (z mého pohledu je to takové z nouze ctnost řešení). David Věroš Kaplan píše v Po 11. 07. 2016 v 22:57 +0200: > Ahoj Davro, > > Velmi podobně to teď řeším - .RPM by mělo být self-contained - až na > data. > > v /opt/cool-app/virtualenv je virtualenv (s vlastními verzemi > pythonových knihoven) > v /opt/cool-app/ je zbytek aplikace > v /etc/systemd/.../cool-app.service je konfigurace wsgi, aby se celá > ta aplikace spustila. > > A celou tuhle špinavou práci ( git repo || -> .RPM || .DEB) za mně > dělá Jenkins jako wrapper nad fpm, tak mne existence dvou zamíchaných > adresářů netrápí. Pro to fpm ( https://github.com/jordansissel/fpm ) > si pouštím čisté VM (nebo dneska Docker kontejnery), takže mne > netrápí, že v systému je nepořádek. > > Když zajdeš na oběd, tak to můžu ukázat. Nebo můžu udělat na nějakým > PyVu malý talk. Jen mám pocit, že to je věc, která je známá a nkoho > by nezajímala. > > Myslím, že je trošku matoucí to, že "Django app" (tedy > znovupoužitelná komponenta pro vývojáře) je jiná věc, než to co > považuji za "app" já, jako admin. > > --Věroš > PS: Doufám, že odpovídám na správný thread a na to co se ptáš. > > 2016-07-11 22:13 GMT+02:00 David Rohleder : > > David Rohleder píše v Po 11. 07. 2016 v 22:04 +0200: > > > > > > Chtěl jsem k tomu přistoupit jako ke standardnímu pythonovému > > řešení > > > - > > > vyrobit setup.py ze setuptools, pomocí nich to nainstalovat do > > > nějakého > > > adresáře a pak na tom adresáři spustit balíčkovací nástroje, ale > > > zatím > > > se zasekávám na těch minimálně dvou adresářích potřebných pro > > každou > > > appku. Ten django přístup se mně v tomto případě moc nelíbí. > > > > > > > > > ještě jsem uvažoval o tom, že bych prostě tu appku celou zkopíroval > > do > > projektového adresáře, tj. > > > > $ django-admin startproject app1 > > $ cd app1 (dostanu se do adresáře projektu) > > $ django-admin startapp appX > > $ mv appX/* app1 > > > > a tento výsledek zabalil. > > > > Viděl by v tom někdo nějaký problém? > > > > Díky > > > > David > > > > ___ > > Python mailing list > > python@py.cz > > http://www.py.cz/mailman/listinfo/python > > > > Visit: http://www.py.cz > > > > > -- > --V.Kaplan > ___ > Python mailing list > python@py.cz > http://www.py.cz/mailman/listinfo/python > > Visit: http://www.py.cz ___ Python mailing list python@py.cz http://www.py.cz/mailman/listinfo/python Visit: http://www.py.cz
Re: [python] Django a debianí balí?kovací systém
Jan Bednařík píše v Po 11. 07. 2016 v 23:02 +0200: > Není náhoda, že když jsi hledal nějaký Django projekt zabalený jako > balíček pro Debian, tak jsi nic moc nenašel. Proč bys v prvé řadě > chtěl z univerzálního Pythonního projektu dělat balíček specifický > pro nějakou linuxovou distribuci? > > To že používáš Django z toho nedělá nic specifického. Použij > standardní postup jako u všech Pythonních věcí - vyrob pythonní > balíček (nebo balíčky) na PyPI a instaluj přes pip. Nechci to instalovat přes pip. Chci to instalovat přes standardní balíčkovací systém. Proč? Protože při každém upgradu nemusím myslet na to, že mám ještě spouštět upgrade pythoních knihoven, které mně můžou rozbít polovinu systému. David > > Honza > > 2016-07-11 22:13 GMT+02:00 David Rohleder : > > David Rohleder píše v Po 11. 07. 2016 v 22:04 +0200: > > > > > > Chtěl jsem k tomu přistoupit jako ke standardnímu pythonovému > > řešení > > > - > > > vyrobit setup.py ze setuptools, pomocí nich to nainstalovat do > > > nějakého > > > adresáře a pak na tom adresáři spustit balíčkovací nástroje, ale > > > zatím > > > se zasekávám na těch minimálně dvou adresářích potřebných pro > > každou > > > appku. Ten django přístup se mně v tomto případě moc nelíbí. > > > > > > > > > ještě jsem uvažoval o tom, že bych prostě tu appku celou zkopíroval > > do > > projektového adresáře, tj. > > > > $ django-admin startproject app1 > > $ cd app1 (dostanu se do adresáře projektu) > > $ django-admin startapp appX > > $ mv appX/* app1 > > > > a tento výsledek zabalil. > > > > Viděl by v tom někdo nějaký problém? > > > > Díky > > > > David > > > > ___ > > Python mailing list > > python@py.cz > > http://www.py.cz/mailman/listinfo/python > > > > Visit: http://www.py.cz > > > ___ > Python mailing list > python@py.cz > http://www.py.cz/mailman/listinfo/python > > Visit: http://www.py.cz ___ Python mailing list python@py.cz http://www.py.cz/mailman/listinfo/python Visit: http://www.py.cz
Re: [python] Django a debianí balí?kovací systém
Není náhoda, že když jsi hledal nějaký Django projekt zabalený jako balíček pro Debian, tak jsi nic moc nenašel. Proč bys v prvé řadě chtěl z univerzálního Pythonního projektu dělat balíček specifický pro nějakou linuxovou distribuci? To že používáš Django z toho nedělá nic specifického. Použij standardní postup jako u všech Pythonních věcí - vyrob pythonní balíček (nebo balíčky) na PyPI a instaluj přes pip. Honza 2016-07-11 22:13 GMT+02:00 David Rohleder : > David Rohleder píše v Po 11. 07. 2016 v 22:04 +0200: > > > > Chtěl jsem k tomu přistoupit jako ke standardnímu pythonovému řešení > > - > > vyrobit setup.py ze setuptools, pomocí nich to nainstalovat do > > nějakého > > adresáře a pak na tom adresáři spustit balíčkovací nástroje, ale > > zatím > > se zasekávám na těch minimálně dvou adresářích potřebných pro každou > > appku. Ten django přístup se mně v tomto případě moc nelíbí. > > > > > ještě jsem uvažoval o tom, že bych prostě tu appku celou zkopíroval do > projektového adresáře, tj. > > $ django-admin startproject app1 > $ cd app1 (dostanu se do adresáře projektu) > $ django-admin startapp appX > $ mv appX/* app1 > > a tento výsledek zabalil. > > Viděl by v tom někdo nějaký problém? > > Díky > > David > > ___ > Python mailing list > python@py.cz > http://www.py.cz/mailman/listinfo/python > > Visit: http://www.py.cz > ___ Python mailing list python@py.cz http://www.py.cz/mailman/listinfo/python Visit: http://www.py.cz
Re: [python] Django a debianí balí?kovací systém
Ahoj Davro, Velmi podobně to teď řeším - .RPM by mělo být self-contained - až na data. v /opt/cool-app/virtualenv je virtualenv (s vlastními verzemi pythonových knihoven) v /opt/cool-app/ je zbytek aplikace v /etc/systemd/.../cool-app.service je konfigurace wsgi, aby se celá ta aplikace spustila. A celou tuhle špinavou práci ( git repo || -> .RPM || .DEB) za mně dělá Jenkins jako wrapper nad fpm, tak mne existence dvou zamíchaných adresářů netrápí. Pro to fpm ( https://github.com/jordansissel/fpm ) si pouštím čisté VM (nebo dneska Docker kontejnery), takže mne netrápí, že v systému je nepořádek. Když zajdeš na oběd, tak to můžu ukázat. Nebo můžu udělat na nějakým PyVu malý talk. Jen mám pocit, že to je věc, která je známá a nkoho by nezajímala. Myslím, že je trošku matoucí to, že "Django app" (tedy znovupoužitelná komponenta pro vývojáře) je jiná věc, než to co považuji za "app" já, jako admin. --Věroš PS: Doufám, že odpovídám na správný thread a na to co se ptáš. 2016-07-11 22:13 GMT+02:00 David Rohleder : > David Rohleder píše v Po 11. 07. 2016 v 22:04 +0200: > > > > Chtěl jsem k tomu přistoupit jako ke standardnímu pythonovému řešení > > - > > vyrobit setup.py ze setuptools, pomocí nich to nainstalovat do > > nějakého > > adresáře a pak na tom adresáři spustit balíčkovací nástroje, ale > > zatím > > se zasekávám na těch minimálně dvou adresářích potřebných pro každou > > appku. Ten django přístup se mně v tomto případě moc nelíbí. > > > > > ještě jsem uvažoval o tom, že bych prostě tu appku celou zkopíroval do > projektového adresáře, tj. > > $ django-admin startproject app1 > $ cd app1 (dostanu se do adresáře projektu) > $ django-admin startapp appX > $ mv appX/* app1 > > a tento výsledek zabalil. > > Viděl by v tom někdo nějaký problém? > > Díky > > David > > ___ > Python mailing list > python@py.cz > http://www.py.cz/mailman/listinfo/python > > Visit: http://www.py.cz > -- --V.Kaplan ___ Python mailing list python@py.cz http://www.py.cz/mailman/listinfo/python Visit: http://www.py.cz
Re: [python] Django a debianí balí?kovací systém
David Rohleder píše v Po 11. 07. 2016 v 22:04 +0200: > > Chtěl jsem k tomu přistoupit jako ke standardnímu pythonovému řešení > - > vyrobit setup.py ze setuptools, pomocí nich to nainstalovat do > nějakého > adresáře a pak na tom adresáři spustit balíčkovací nástroje, ale > zatím > se zasekávám na těch minimálně dvou adresářích potřebných pro každou > appku. Ten django přístup se mně v tomto případě moc nelíbí. > ještě jsem uvažoval o tom, že bych prostě tu appku celou zkopíroval do projektového adresáře, tj. $ django-admin startproject app1 $ cd app1 (dostanu se do adresáře projektu) $ django-admin startapp appX $ mv appX/* app1 a tento výsledek zabalil. Viděl by v tom někdo nějaký problém? Díky David ___ Python mailing list python@py.cz http://www.py.cz/mailman/listinfo/python Visit: http://www.py.cz
Re: [python] Django a debianí balí?kovací systém
Petr Viktorin píše v Po 11. 07. 2016 v 21:31 +0200: > > > problém je v tom, že takto django moc nefunguje a zatím musí mít > > člověk minimálně dva adresáře - jeden se samotným djangem > > (settings.py a spol.) a další se samotnou aplikací. > > > > Ví někdo, jak se správně vyrábí django balík pro nějakou linuxovou > > distribuci (debian, RH)? Případně jak na to? Nerad bych se dopustil > > nějaké prasárny, která by mně do budoucnosti zkomplikovala práci. > Ahoj! Já do Djanga moc nedělám a balíčkuju jen pro Fedoru, ale > takhle > bych to dělal já: > > Z každé appky můžeš vytvořit reusable appku [0], a tu zabalit > zvlášť. jo. V současnosti mám ale pouze jednu appku a pokud budu psát další appku, tak budu chtít, aby byla kompletně nezávislá na ostatních django projektech. > Pokud ti v "hlavním" projektu zbyla nějaká funkcionalita (models, > views, > templates, ...), tak vytvoř novou zvláštní reusable appku a tyhle > věci > dej do ní. nemělo by tam nic zbýt. > V projektu ti pak zbudou jenom moduly jako settings.py, urls.py, > wsgi.py, které zabal zvlášť, a všechno ostatní tomu dej jako > závislosti. To by potenciálně šlo, ale osobně bych rád spíš dospěl do stavu, kdy bude settings.py (a všechno, co je iniciální součástí projektu) součástí té jedné appky a tím pádem bych měl pouze jeden adresář s celým projektem včetně té jediné appky. > > Nejde to udělat tak, že každá aplikace bude separátní instance Djanga > – > takhle to opravdu nefunguje. Např. 'django.contrib.auth', která > definuje > model User, je taky appka, a spousta ostatních appek ji používá, ale > nedá se dost dobře spustit sama o sobě. až tak moc jsem to samozřejmě nemyslel. django.contrib.auth je patrně appka, nicméně z mého pohledu je to součást standardní distribuce djanga - pokud nějakým způsobem sahá do databáze, tak to dělá pro každý projekt zvlášť. Já bych si to představoval následovně: Když přistupuju ke dvěma adresám http://server/app1 http://server/app2 tak bych chtěl, aby každá z těch webových adres byla oddělena na úrovni apache serveru pomocí nějakého Alias app1 /usr/share/lib/.../pythonXX/app1 ... Alias app2 /usr/share/lib/.../pythonXX/app2 ... Každá aplikace totiž může být: - vyvinutá pro jinou verzi djanga - vyvinutá pro jinou verzi pythonu - můžu mít dvě instance jedné aplikace, které budou používat různé databáze Navíc bych byl rád, aby bylo možné běžet různé verze djanga (kvůli různě napsaným aplikacím), čehož je možné dosáhnout pomocí virtualenv, ale to už se do toho zamotávám až příliš, pro začátek bych rád dokonvergoval do stavu jedna aplikace - jeden balík. Zatím mám dost pocit, že je v tomto django postaveno dost nešikovně a nikdo s reusable apps moc nepočítal. Snažil jsem se podívat na nějaký django projekt zabalený jako balíček pro debian, ale zatím jsem přišel pouze na openstack dashboard, což je teda dost moloch na to, abych se v tom jednoduše vyznal. Chtěl jsem k tomu přistoupit jako ke standardnímu pythonovému řešení - vyrobit setup.py ze setuptools, pomocí nich to nainstalovat do nějakého adresáře a pak na tom adresáři spustit balíčkovací nástroje, ale zatím se zasekávám na těch minimálně dvou adresářích potřebných pro každou appku. Ten django přístup se mně v tomto případě moc nelíbí. David ___ Python mailing list python@py.cz http://www.py.cz/mailman/listinfo/python Visit: http://www.py.cz
Re: [python] Django a debianí balí?kovací systém
On 07/11/2016 08:26 PM, David Rohleder wrote: Ahoj, mám tak trochu problém nalezením řešení pro jednu konkrétní situaci: Máme vlastní django aplikaci a rádi bychom ji zabalili jako debianí balík. Z mého pohledu potřebuju něco typu - jedno django - jedna aplikace. Bohužel django používá jinou filozofii - jedno django - mnoho aplikací (které také sdílejí jednu databázi a pod). Když django startuje projekt, tak vytvoří základní kostru pro aplikace ve tvaru: myproject/ manage.py myproject/ __init__.py settings.py urls.py wsgi.py každá aplikace si pak vytvoří svůj vlastní podstrom myproject/ manage.py blog/ __init__.py models.py managers.py settings.py views.py urls.py templates/ cílem je, aby byly jednotlivé aplikace v rámci jednoho djanga tzv. self-contained. Já mám ovšem pocit, že toto není úplně šťastné řešení a chtěl bych, aby každá aplikace byla separátní instancí djanga (a o řízení se staral třeba apache) - žádné sdílení databáze mezi jednotlivými aplikacemi a pod. Cílem je, abych mohl vytvořit debianí balík tak, abych mohl vedle sebe nainstalovat několik oddělených aplikaci (které mezi sebou nemají žádný vztah). Ideálně tak, že bych měl pouze adresář myproject/ manage.py myproject/ __init__.py urls.py wsgi.py models.py managers.py views.py urls.py templates/ problém je v tom, že takto django moc nefunguje a zatím musí mít člověk minimálně dva adresáře - jeden se samotným djangem (settings.py a spol.) a další se samotnou aplikací. Ví někdo, jak se správně vyrábí django balík pro nějakou linuxovou distribuci (debian, RH)? Případně jak na to? Nerad bych se dopustil nějaké prasárny, která by mně do budoucnosti zkomplikovala práci. Ahoj! Já do Djanga moc nedělám a balíčkuju jen pro Fedoru, ale takhle bych to dělal já: Z každé appky můžeš vytvořit reusable appku [0], a tu zabalit zvlášť. Pokud ti v "hlavním" projektu zbyla nějaká funkcionalita (models, views, templates, ...), tak vytvoř novou zvláštní reusable appku a tyhle věci dej do ní. V projektu ti pak zbudou jenom moduly jako settings.py, urls.py, wsgi.py, které zabal zvlášť, a všechno ostatní tomu dej jako závislosti. Nejde to udělat tak, že každá aplikace bude separátní instance Djanga – takhle to opravdu nefunguje. Např. 'django.contrib.auth', která definuje model User, je taky appka, a spousta ostatních appek ji používá, ale nedá se dost dobře spustit sama o sobě. [0] https://docs.djangoproject.com/en/1.9/intro/reusable-apps/ ___ Python mailing list python@py.cz http://www.py.cz/mailman/listinfo/python Visit: http://www.py.cz
[python] Django a debianí balí?kovací systém
Ahoj, mám tak trochu problém nalezením řešení pro jednu konkrétní situaci: Máme vlastní django aplikaci a rádi bychom ji zabalili jako debianí balík. Z mého pohledu potřebuju něco typu - jedno django - jedna aplikace. Bohužel django používá jinou filozofii - jedno django - mnoho aplikací (které také sdílejí jednu databázi a pod). Když django startuje projekt, tak vytvoří základní kostru pro aplikace ve tvaru: myproject/ manage.py myproject/ __init__.py settings.py urls.py wsgi.py každá aplikace si pak vytvoří svůj vlastní podstrom myproject/ manage.py blog/ __init__.py models.py managers.py settings.py views.py urls.py templates/ cílem je, aby byly jednotlivé aplikace v rámci jednoho djanga tzv. self-contained. Já mám ovšem pocit, že toto není úplně šťastné řešení a chtěl bych, aby každá aplikace byla separátní instancí djanga (a o řízení se staral třeba apache) - žádné sdílení databáze mezi jednotlivými aplikacemi a pod. Cílem je, abych mohl vytvořit debianí balík tak, abych mohl vedle sebe nainstalovat několik oddělených aplikaci (které mezi sebou nemají žádný vztah). Ideálně tak, že bych měl pouze adresář myproject/ manage.py myproject/ __init__.py urls.py wsgi.py models.py managers.py views.py urls.py templates/ problém je v tom, že takto django moc nefunguje a zatím musí mít člověk minimálně dva adresáře - jeden se samotným djangem (settings.py a spol.) a další se samotnou aplikací. Ví někdo, jak se správně vyrábí django balík pro nějakou linuxovou distribuci (debian, RH)? Případně jak na to? Nerad bych se dopustil nějaké prasárny, která by mně do budoucnosti zkomplikovala práci. Dík David ___ Python mailing list python@py.cz http://www.py.cz/mailman/listinfo/python Visit: http://www.py.cz