Tyto stránky již nejsou udržovány. Obsah je postupně přesouván/aktualizován na adrese chytrosti.marrek.cz.
1/1
Tento návod si klade za cíl ukázat jak lze na Hrochovi zveřejnit aplikace napsané v našem oblíbeném jazyce Python. Při výuce používáme framework Flask, proto všechny zde uvedené příklady používají tento framework. Pokud používáte jiný framework stačí si návod maličko modifikovat.
Na Hrochovi je pro webové stránky použit Pyhon 3.
Obsah:
Při vývoji aplikací je velice často potřeba nainstalovat nějaký Python modul, který není běžnou součástí systému nebo není v systému dostupná požadovaná verze. Doporučovanou cestou pro instalaci modulů pro Python je pip v kombinaci s venv.
pip je správce modulů, který umožňuje nejen jejich instalaci, ale také jejich celkovou správu (odinstalace, upgrade, správa verzí). venv je virtuální prostředí, které je oddělené od zbytku systému.
Vytvoříte si virtuální prostředí právě pro svou aplikaci a pomocí pip
si
nainstalujete moduly potřebné právě pro tuto aplikaci. Ve své aplikaci si potom
aktivujete právě toto své virtuální prostředí, kde je nainstalováno právě to,
co potřebujete.
Virtuální prostředí vytvoříme příkazem:
pyvenv vjmeno
vjmeno
je jméno virtuálního prostředí a také jméno adresáře, do kterého se
nainstaluje.
Virtuální prostředí je třeba aktivovat:
source vjmeno/bin/activate
Deaktivuje se pomocí příkazu deactivate
.
Pokud se nacházíte v aktivovaném prostředí spouští se Python a jeho moduly právě z tohoto prostředí. Porovnejte si výstupy následujících příkazů v aktivovaném/deaktivovaném virtuálním prostředí.
type python
type pip
Pro Python aplikace je určen
adresář ~/public_python
respektive soubor app.wsgi
v tomto adresáři.
Nejprve je třeba nastavit správně přístupová práva:
hroch$ chmod 711 ~
hroch$ chmod 755 ~/public_python
případně:
hroch$ chmod -R a+rX ~/public_python
Vaše webová aplikace by měla být napsána jako Python modul. To znamená, že bude
v jednom souboru, nebo v jednom adresáři. V to případě se modul jmenuje pokus
.
Adresářová struktura může vypadat například takto:
public_python/ public_python/
├── activate_this.py ├── activate_this.py
├── app.wsgi ├── app.wsgi
├── pokus/ ├── pokus.py
│ ├── static/ ├── static/
│ │ ├── favico.png │ ├── favico.png
│ │ └── styles.css │ └── styles.css
│ ├── templates/ ├── templates/
│ │ └── base.html │ ├── base.html
│ ├── __init__.py │ └── views.py
│ └── views.py │
└── vjmeno/ └── vjmeno/
├── .../ ├── .../
│ ├── ... │ ├── ...
│ └── ... │ └── ...
└── ... └── ...
vjmeno
:pokus
:activate_this.py
:app.wsgi
app.wsgi
závisí na konkrétním
Frameworku. Pro nás je klíčoví řádek 4, kde je potřeba zadat jméno (cestu)
virtuálního prostředí. Dále jsou klíčové poslední dva řádky: do proměnné
application
(jméno je závazné) přiřadíme aplikaci z našeho modulu. Vše
ostatní řeší aktivaci virtuálního prostředí.
1 import os
2 import sys
3
4 VENVNEME = 'vjmeno'
5
6 DIR = os.path.dirname(__file__)
7 if DIR == '':
8 DIR = '.'
9 VENV = os.path.join(DIR, VENVNEME)
10 THIS = os.path.join(VENV, 'bin/activate_this.py')
11 activate = os.path.join(DIR, 'activate_this.py')
12 exec(open(activate).read(), {'__file__': THIS})
13
14 sys.path.insert(0, DIR)
15
16 import pokus
17 application = pokus.app
`--> stáhnout
Svou aplikaci naleznete na adrese http://hroch.spseol.cz/~LOGIN/pyapp/. (Místo LOGIN uveďte prosím své uživatelské jméno :-)
Můžete se podívat také na:
V Linuxu lze pro instalaci Python modulů použít balíčkovací systém
dané Linuxové distribuce. Většinou tedy stačí
najít balíček s příslušným modulem. Například python-flask
nebo
python-bottle
. I pro instalaci pip bude pravděpodobně existovat balíček
python-pip
(v různých distribucích se mohou jména balíčků lišit).
Zároveň lze použít i postup popsaný pro Windows, ale není vždy bezpečné provádět instalaci přímo do systému a míchat tak distribuční a stažené moduly.
Pokud používáte pythonxy měl by být pip již nainstalován. Pokud ne, stáhnete instalační skript get-pip.py a poté ho v příkazové řádce spustíte:
python get-pip.py
Detaily nejen instalace naleznete na webových stránkách projektu https://pip.pypa.io.
Nyní už můžete instalovat moduly. Například:
pip install Jinja2
pip install Flask
pip install bottle
Je myslím dobré poznamenat, že existuje nástroj virtualenv, který umožňuje vytvořit si pro každý projet vlastní Python prostředí a nainstalovat si potřebné moduly pouze do tohoto prostředí bez zásahu do sytému:
Vývoj aplikace probíhá většinou přímo na vašem desktopu. Existuje poměně velké množství frameworků pro vývoj webových aplikací. V tomto textu se omezíme na Bottle a Flask. Bottle je maximálně jednoduchý dá se zvládnou za pár hodin. Já bych si dovolil doporučit Flask, který je myslím ideálním kompromisem mezi jednoduchostí a komplexností.
Nabízím zde malou pokusnou aplikaci pro Bottle a pokusnou aplikaci pro Flask. V příkazové řádce zadáte
python pokus.py
Měl by se spustit malý vývojový webový server, který bude přístupný na adrese
http://localhost:8080/ případně http://127.0.0.1:8080/. Stačí zadat adresu
do prohlížeče a můžete testovat. Pozor! Pokud necháte zapnuty reloader=True
a
uděláte v kódu syntaktickou chybu vývojový server bude ukončen s chybovým
hlášením a třeba jej znovu spustit.