Einstieg in Werkzeug - Was brauche ich?

Sockets, TCP/IP, (XML-)RPC und ähnliche Themen gehören in dieses Forum
Antworten
mamr
User
Beiträge: 4
Registriert: Donnerstag 11. Dezember 2008, 08:47

Hi,
bin neu hier im Forum und lerne Python bisher nur zum Spaß. Dabei habe ich mich zunächst mit Django beschäftigt. Zum einen, weil es mir einsteigerfreundlich erschien und zum anderen weil es sehr präsent in der Community ist (= bin darauf sehr schnell gestoßen). Bisher habe ich nur Testprojekte geschrieben, welche ich lokal auf der Platte liegen habe. Leider habe ich deswegen keine Ahnung vom Deployment. Insbesondere mit Webservern kenne ich mich garnicht aus, da ich mit dem integrierten Entwicklungsserver sehr von Django verwöhnt wurde.

Da mir aber in Django ab und an doch etwas zu viel "Magic" passiert und ich gerne die Hintergründe erfahren möchte, habe ich mich auf die Suche nach einem neuen "Lernabschnitt" gemacht. Dabei bin ich auf Werkzeug gestoßen. Zunächst habe ich dafür gelesen, wobei es sich um WSGI handelt. Nun möchte ich gerne das Tutorial und die restliche Doku von Werkzeug in Angriff nehmen. Dabei stellt sich mir insbesondere die Frage was ich dafür benötige. Insbesondere suche ich Empfehlungen für einen einfach zu konfigurierenden Entwicklungs-Webserver. Ich dachte bisher an Lighttpd. Vielleicht hat aber jemand noch eine andere Idee.

Ansonsten brauche ich noch Werkzeug selbst und ggf. ein ORM (ich dachte für das Rumspielen an SQLAlchemy und SQLite) und ggf. eine Template-Engine, oder?

Grüße und vielen Dank schonmal.
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Hallo mamr, willkommen im Forum,
mamr hat geschrieben:Dabei bin ich auf Werkzeug gestoßen.
Ich bin positiv erstaunt wie populär Werkzeug ist, trotz minimalem Marketing :)
mamr hat geschrieben:Insbesondere suche ich Empfehlungen für einen einfach zu konfigurierenden Entwicklungs-Webserver. Ich dachte bisher an Lighttpd. Vielleicht hat aber jemand noch eine andere Idee.
Werkzeug bringt wie Django zum Entwickeln einen Webserver mit. Fürs Deployment finde ich Apache trotz allem noch brauchbarer als Lighty. Ich werde nginx und Cherokee mal ausprobieren müssen; aber meine Erfahrung mit Apache war in der Regel durchaus positiv. Lediglich "seltsame" Sachen waren umständlich zu konfigurieren.
mamr hat geschrieben:Ansonsten brauche ich noch Werkzeug selbst und ggf. ein ORM (ich dachte für das Rumspielen an SQLAlchemy und SQLite) und ggf. eine Template-Engine, oder?
Ja, SQLAlchemy ist quasi die Standardwahl die wohl gut über 90% aller Werkzeug-Nutzer gewählt haben. Passend dazu gibt es als Templateengine Jinja, das quasi das ist was die Django-Templates hätten werden sollen. Andere Möglichkeiten wären Mako oder Genshi, hängt halt ab was einem so wichtig ist.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
Y0Gi
User
Beiträge: 1454
Registriert: Freitag 22. September 2006, 23:05
Wohnort: ja

Werkzeugs `script` benutzt den HTTPd aus `wsgiref`, der auf `SimpleHTTPServer`(?) aufsetzt - beides Komponenten, die in den aktuellen Versionen von Python mitgeliefert werden. Zum Entwickeln ist das vollkommen ausreichen und besonders das Autoreload-Feature (das es nicht nur bei Werkzeug gibt) ist sehr hilfreich.

Beim Deployment bin ich weiterhin bei Apache, aktuell (und wohl auch langfristig) mit mod_wsgi. Simpel, robust, mitgedacht. Lighty hat eine merkwürdige Syntax und müsste über FastCGI oder SCGI kommunizieren, Cherokee scheint noch nicht ausreichend reif und/oder verbreitet zu sein. Mittlerweile würde ich eher nginx als Lighty intensiver testen wollen, da es dort zum Einen auch ein (anderes) mod_wsgi gibt, zum Anderen ist mir dort die eine oder andere Erfolgsstory als Python-Frontend bekannt.

SQLAlchemy: +1. SQLite musst du wissen; wenn man regelmäßig sein Schema der aktuellen Entwicklung anpassen will, ohne die Datenbank komplett zu droppen, dann macht das mit den GUIs und den limitierten Fähigkeiten (z. B.: Tabellenfelder lassen sich nicht entfernen) wenig Spaß. Da machen sich MySQL oder PostgreSQL doch sehr schnell bezahlt, habe ich für mich festgestellt.

Bei Template Engines scheiden sich die Geister etwas. Jinja ist hier durch mitsushiko (der ja auch Werkzeug und noch Einiges verbrochen hat) und seine Projekte recht beliebt, Genshi hat auch seine Anhänger. Mako mag unbestritten ebenfalls sehr gut sein, scheint in diesem Forum aber fast niemand zu nutzen. Die Wahl hängt letztlich auch davon ab, ob man lieber Text- oder XML-orientierte Templates möchte.
mamr
User
Beiträge: 4
Registriert: Donnerstag 11. Dezember 2008, 08:47

Danke für eure netten Antworten. Leider habe ich in den letzten 2 Stunden fesstellen müssen, dass Werkzeug für einen Hobbyprogrammierer in meinem Stadium wohl doch noch ein wenig zu hoch ist. Da habe ich mich ein wenig überschätzt. Muss wohl noch ein wenig mehr mit Django machen um Python selbst mehr zu verstehen. Dann kann ich mich vielleicht nochmal an Werkzeug rantrauen.
Y0Gi
User
Beiträge: 1454
Registriert: Freitag 22. September 2006, 23:05
Wohnort: ja

Woran scheiterst du denn?
mamr
User
Beiträge: 4
Registriert: Donnerstag 11. Dezember 2008, 08:47

Ist schwer zu beschreiben und hört sich vielleicht doof an, aber eigentlich an nichts Speziellem. Ich habe einfach das Gefühl, dass das gesamte Tutorial noch nichts für mich ist. Ich habe eigentlich auch nie richtig Python gelernt, sondern habe nach wenigen Mini-Tutorials sofort mit Django begonnen. Deswegen sind einige Dinge für mich völlig neu.

Ein Beispiel: Ich habe eigentlich nie so recht gewusst, was def __init__() eigentlich genau macht. Habe es innerhalb von Django immer als selbstverständlich genommen, ohne drüber nachzudenken.

Deshalb habe ich heute beschlossen, mir nochmal ein reines Python-Tutorial oder ähnliches zu suchen und dieses durchzuarbeiten. Ich denke nicht, dass ich sonst zum Ziel komme. Bin eigentlich auch noch nicht in einem Stadium, wo Django so unflexibel wird, dass es meinen Anforderungen nicht mehr gerecht wird. Vielleicht wird es erst Zeit etwas anderes zu machen, wenn dies eintritt.

EDIT: Danke trotzdem für eure Hilfe. Für weitere Tipps bin ich natürlich nach wie vor offen.
Benutzeravatar
Sr4l
User
Beiträge: 1091
Registriert: Donnerstag 28. Dezember 2006, 20:02
Wohnort: Kassel
Kontaktdaten:

mamr hat geschrieben:Danke für eure netten Antworten. Leider habe ich in den letzten 2 Stunden fesstellen müssen, dass Werkzeug für einen Hobbyprogrammierer in meinem Stadium wohl doch noch ein wenig zu hoch ist.
Also so schlimm ist Werkzeug auch nicht ;-), aber wenn du einen leichten einstieg suchst schau dir auch mal CherryPy (http://www.cherrypy.org) an.

Ansonsten macht Werkzeug echt Spaß, ansonsten Code über Apache + mod_wsgi laufen lassen. Mako oder Jinja als Template Engine.

Das Python offizielle Tutorial ist sehr zu empfehlen, also auf jeden Fall mal anschauen.

mfG
DasIch
User
Beiträge: 2718
Registriert: Montag 19. Mai 2008, 04:21
Wohnort: Berlin

mamr hat geschrieben:Ein Beispiel: Ich habe eigentlich nie so recht gewusst, was def __init__() eigentlich genau macht. Habe es innerhalb von Django immer als selbstverständlich genommen, ohne drüber nachzudenken.
Dir fehlen da offensichtlich einige Grundkenntnisse von Python selbst, dass macht es ungleich schwerer. Werkzeug selbst ist imho ziemlich einfach imho im Gegensatz zu großen Frameworks wie Django wenn man diese wirklich verstehen will.
Y0Gi
User
Beiträge: 1454
Registriert: Freitag 22. September 2006, 23:05
Wohnort: ja

Das sehe ich ebenfalls so.
mamr
User
Beiträge: 4
Registriert: Donnerstag 11. Dezember 2008, 08:47

Ich habe jetzt angefangen das offizielle Tutorial durchzuarbeiten. Dabei habe ich schon einige Wissenslücken geschlossen. (Tükisch, dieses Django. Die Doku ist so gut, dass man garnicht merkt wie wenig man überhaupt über Python weiß.) Wenn ich das durchhabe, wende ich mich Werkzeug nochmal zu. Vielen Dank für eure Tips!
Antworten