ugrás a tartalomhoz

Fejlesztői környezet kialakítása Python alapú fejlesztéshez

Török Gábor · 2010. Aug. 31. (K), 10.11

Az alábbiakban egy rugalmas, jól karbantartható, Python alapú fejlesztési környezet kialakítását mutatom be. Azt a környezetet tekintem rugalmasnak, amely nem köti meg a kezemet a fejlesztés során választott eszközöket illetően, alacsony jogosultsági szinttel is használható, a karbantarthatóságot pedig abban mérem, hogy milyen egyszerű módozatot nyújt környezetek létrehozására, testreszabására és törlésére. A bemutatott módszertant a mindennapi munkáim során alkalmazom.

Az esszében Django 1.2-re építkező webalkalmazás fejlesztését feltételezem Mac OS X Snow Leopard-on 2.6.1-es Pythonnal.

A fejlesztői környezet kialakításához szükséges egyszeri konfiguráció

Python csomagok (modulok, alkalmazások, mindegy) beszerzése és telepítése több úton is járható. Dióhéjban a leggyakrabban előforduló opciókról:

  • Tömörített bundle letöltése a projekt honlapjáról (pl. Django-1.2.1.tar.gz), majd python setup.py install. Alapos figyelmet igényel, kényelmetlen karbantartás.

  • OS-sel érkező csomag telepítése, például port install py26-django. Karbantartás, függőségek kezelését az OS végzi. Rendszerszintű hozzáférést igényel, minden alkalmazás adott csomagból a feltelepített verziójú példányt használja. Egyedi verziók projekthez kötött telepítése karbantartási problémákba ütközik.

  • easy_install django. Gyári kiszerelésben a Python értelmezővel érkező csomagkezelő. Használata kényelmes, a csomagok eltávolítását azonban nem támogatja.

  • pip install django. A pip a piacon elérhető legjobb csomagkezelő eszköz. Aktívan fejlesztett kódbázis és naprakészen tartott csomagtároló. Az easy_install-lal szemben képes csomagok eltávolítására. Együttműködik a dolgozat kulcs fontosságú eszközével, a virtualenvvel.

A virtualenv egymástól elszigetelt és a rendszertől különálló Python futtatási környezet kialakításáért felelős. Használata nem igényel adminisztrátori hozzáférést. Segítségével egyazon projekt több, például eltérő verziójú Python értelmezőt tartalmazó környezettel tesztelhető. Nincsenek eltérő verziójú csomagokból fakadó konfliktusok. Ha nincs szükségünk többet egy környezetre, rm-mel törölhető.

Az alábbi lépésekkel konfiguráld a környezetet.

Mint említett, az easy_install a Python disztribúció része. Telepítsd fel vele a pipet.

$ sudo easy_install pip

Innentől a pipet használjuk. Telepítsd fel a virtualenvet.

$ sudo pip install virtualenv

Megválaszthatod, hogy a virtualenvet a projekt könyvtárához kötve szeretnéd elhelyezni, vagy inkább egy központi helyen tárolnád. Fejlesztői munkaállomáson célszerűbbnek tartom ez utóbbi opciót. Többek között ennek menedzselésében is segít a virtualenvwrapper.

$ sudo pip install virtualenvwrapper

Jelöld ki a virtuális környezetek gyökérmappáját.

$ mkdir ~/.virtualenvs
$ export WORKON_HOME=~/.virtualenvs

A shelled indítójába (legyen ~/.bashrc) vedd fel a következő sorokat.

export WORKON_HOME=~/.virtualenvs
source /usr/local/bin/virtualenvwrapper.sh

Az Emacs szövegeditor gyári kiszerelése kitűnő eszköz Python nyelvű fejlesztéshez. A tartozékai között szerepel a Python shell közvetlen elérésére akár interaktív módon, akár a szerkesztett forráskód részének vagy egészének azonnali értelmezésére. Erre a beépített támogatásra épül a virtualenv.el bővítmény, amellyel a konfigurált munkakörnyezeteket érhetjük el közvetlenül az editorból. A virtualenv-activate paranccsal aktiválható a kívánt környezet; innentől kezdve az Emacsból irányított Python shell automatikusan ebben a környezetben fog dolgozni.

Fejlesztői környezet kialakítása új projekt számára

djangodev néven hozz létre egy új, teljesen üres (--no-site-packages) környezetet.

$ mkvirtualenv --no-site-packages djangoenv

(Az mkvirtualenv a virtualenvwrapper eszköze. Munkakönyvtárként a korábban definiált $WORKON_HOME-ot fogja használni. Virtualenvwrapper nélkül a virtualenv parancs a fentiekkel megegyező paraméterezéssel a current working directory alatt hozza létre a környezetet.)

Aktiváld a virtuális környezetet. (Közvetlenül az mkvirtualenv használata után ez nem szükséges, a legutóbb létrehozott környezet lesz aktív automatikusan, lásd shell prompt.)

(djangodev)$ workon djangoenv

Telepítsd a szükséges Python csomagokat, majd tárold el a telepített csomagok listáját, hogy egy új virtuális környezet létrehozásakor egy paranccsal telepíthesd azokat.

$ pip install ipython
$ pip install Django
$ pip install django-debug-toolbar # böngésző alapú fejlesztői kiegészítések
$ pip install django-extensions    # bővített manage.py parancslista
$ pip install pysqlite             # adatbázis kötések a választott motorhoz
$ pip install south                # gondtalan schema- és adatmigrációhoz
$ pip freeze > requirements.txt

Hozz létre a csodanyul.hu számára egy munkakönyvtárat, és fogj hozzá a Django alapú site fejlesztésének.

$ mkdir ~/Sites/csodanyul.hu
$ cd ~/Sites/csodanyul.hu
$ django-admin.py startproject site
$ open http://docs.djangoproject.com/en/1.2/intro/tutorial01/#intro-tutorial01

Meglévő site számára új munkakörnyezet felállítása a már taglaltakkal megegyező módon történik. Az akvitált munkakörnyezet a deactivate-tel csatolható le. Az új munkakörnyezetbe másik munkakörnyezet csomagjai a pip install -r requirements.txt-vel telephetők. Munkakörnyezet törlése egyszerűen a virtualenv által létrehozott könyvtár törlésével (vagy a virtualenvwrapper által nyújtott rmvirtualenv parancs kiadásával) lehetséges.

 
1

Érdekes és nekem nagyon

virág · 2010. Szep. 1. (Sze), 05.45
Érdekes és nekem nagyon tetsző megközelítést írtál le, majd kipróbálom :) Én most Windows alatt használom a Pythont és a Django-t, egyszerűen minden projekthez létrehozok egy új könyvtárat, kódszerkesztőnek a Far managert használom, van hozzá egy kódszínező ami ismeri a Pythont.
Windows alatt sajnos nagyságrendekkel bénácskábban történik a telepítés, nem is szólva a csomagok kezeléséről, de itt sem volt 15 percnél több a legelső Python/Django telepítésem és konfigurálásom - a hivatalos súgó alapján csináltam, minden elsőre működött. Most Sqlite-val használom, mert a Pythonos MySQL libet sajnos nem sikerült elindítanom Windows alatt, bármit teszek valamilyen titokzatos hibával elpusztul :) Csak az a gond, hogy mióta Pythonozgatok azóta a PHP annyira nyögvenyelős nyelvnek tűnik... Pythonban minden működik, gyors, modern, nincsenek felesleges sallangok benne, nincs olyan, hogy fogszívós-kompromisszum, mert nem támogat ezt vagy azt... :) najó, nem dícsérem, mindkét nyelv jó, csak más.
2

pymysql

dyuri · 2010. Szep. 1. (Sze), 09.13
Fejlesztes alatt szerintem tokeletes az sqlite. Sajnos a C alapu MySQLdb modul fejlesztese kb. leallt, helyette viszont kibontakozoban van egy tisztan python alapu mysql "driver", a pymysql, ami igeretesnek tunik - es mivel tisztan pythonban keszult minden oprendszer alatt illik mukodnie.

Sajnos egyelore, ha jol tudom a djangoban meg nincs hozza tamogatas (legalabbis hivatalosan), maga a pymysql teljesiti a djangos tesztek nagy reszet: http://code.google.com/p/pymysql/issues/detail?id=12&can=1&q=django