Path: csiph.com!feeder.erje.net!1.eu.feeder.erje.net!news.unit0.net!news.netfront.net!not-for-mail From: Petr Viktorin Newsgroups: cz.comp.lang.python Subject: Re: [python] =?utf-8?b?RGphbmdvIGEgZGViaWFuw60gYmFsw60/a292YWPDrSBz?= =?utf-8?b?eXN0w6lt?= Date: Tue, 12 Jul 2016 11:26:13 +0200 Organization: Netfront http://www.netfront.net/ Lines: 124 Message-ID: References: <1468261577.4654.12.camel@ics.muni.cz> <1468267441.4654.34.camel@ics.muni.cz> NNTP-Posting-Host: 194.228.3.217 Mime-Version: 1.0 Content-Type: text/plain; charset=utf-8; format=flowed Content-Transfer-Encoding: 8bit X-Trace: adenine.netfront.net 1468375983 19122 194.228.3.217 (13 Jul 2016 02:13:03 GMT) X-Complaints-To: news@netfront.net NNTP-Posting-Date: Wed, 13 Jul 2016 02:13:03 +0000 (UTC) To: Konference PyCZ Received-SPF: pass (Address passes the Sender Policy Framework) SPF=MAILFROM; sender=encukou@gmail.com; remoteip=::ffff:209.85.220.173; remotehost=; helo=mail-qk0-f173.google.com; receiver=hugo.zagamma.cz; DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=subject:to:references:from:message-id:date:user-agent:mime-version :in-reply-to:content-transfer-encoding; bh=aibxLZQdADvCcTIKBTt7mKGNSFudUknAkAtoIn/DH3U=; b=sOjWc2xnfnyfmlibkD2tBGX/aryHpLznTOlp6V+B9wF6pudm9M64h9WTnwoOpRu9q5 nDx3SJW4y3JD5Xvj8Txj9mLWDNwjXXgomlA1vQ8SKA0sGMeIAyYzsr/fB3QbrMUM2E3l eWsbaFDZNEnMUz0RNvsHdVCRjGfBUm3yrVksq+FcYwq1eXYLcrI2sMH/Ns1Q9pkq+Mq1 PmgtlGonVTKvh+bEmphXICufCtxpgYhnXeJftKx0BdZbH5MI3JI6SLBW5BfHiq1qsvDp syt6fmnYgubALe6/nCA1yEzlqc5n++IvHN/CGSiumjiXe6VElzPHSvPneNpSLO+cAq9z S6ZA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:subject:to:references:from:message-id:date :user-agent:mime-version:in-reply-to:content-transfer-encoding; bh=aibxLZQdADvCcTIKBTt7mKGNSFudUknAkAtoIn/DH3U=; b=ZP4RxWXNPUdSWcEx+8tjlonhOfuk1NXred7ah90TpIfsLXcuzU7j/I9uqiCKGvcy94 0by9PxJYWZYf6YaH5rNby+U4dttKIDl6w2BLPLnxecf8bC3CiwjbRUQQhdWY3Re9kIop mICPEa9EZ6iQ/dCqZxVBNX8UzJBY4J2n4jNkuxcFwCjyDxEs8mBy/fO3a7n6Dy/SVlKK l5qvC5fFKHTisVf4O3FWUbHO6tlW6gjo3G79qXHcTzscxFNH0tsZGcduH3bksoXaDtP0 bY7BWrqhXfYjV06rBYZRtFDgoZZJjc9UjmS/XNysGev4/V4Qggbmgz0TzPRCbDFJ8bsT VITw== X-Gm-Message-State: ALyK8tJi0ROT8duq6IdDA5cwqwun7UV8mv5GpVlw0YB4Pe7ztwXL1WBAL0R+rpV8fL2QUw== X-Received: by 10.55.94.135 with SMTP id s129mr1563672qkb.139.1468315577004; Tue, 12 Jul 2016 02:26:17 -0700 (PDT) Old-Return-Path: User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:45.0) Gecko/20100101 Thunderbird/45.1.1 In-Reply-To: <1468267441.4654.34.camel@ics.muni.cz> X-BeenThere: python@py.cz X-Mailman-Version: 2.1.20 Precedence: list List-Id: Konference PyCZ List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Xref: csiph.com cz.comp.lang.python:3093 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í. --- news://freenews.netfront.net/ - complaints: news@netfront.net ---