Grundsätzliche Fragen von einem VB/.NET Programmierer ...

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
SteffenM
User
Beiträge: 4
Registriert: Sonntag 15. Januar 2012, 16:44

Hallo Zusammen,

auch auf Gefahr, dass ich erschlagen werde - was ich nicht hoffen will hier ein paar Fragen:

Ich programmiere schon viele Jahre mehr oder weniger professionelle Software / Tools vorrangig in VB, VBA oder .NET. Nun möchte ich mir mal etwas neues anschauen und da mir immer wieder mal Python untergekommen ist habe ich mich ein wenig damit beschäftigt. Sprich ich habe mir ein Einsteiger-Buch gekauft und mit ein paar einfachen Kommandozeilen Programmen gespielt. Soweit so gut ...

In meinen Augen als Python Neuling ist die Vielfalt der Module, Tools und Seiten Fluch und Segen zu gleich und ich verliere etwas den Überblick bzw. kann für mich keinen halbwegs goldenen Weg erkennen.

- Ich möchte ein Python Projekt vorrangig für Windows starten und benötige dazu ja ein GUI Framework mit Python Modul. Auf was soll ich da setzen QT mit PyOT oder doch mit PySide oder was ganz anderes?

- Das ganze gleich mit 3.2 starten oder doch lieber noch auf 2.7 setzen?

- Es ist klar, dass Python eine Interpreter Sprache ist. Wie kann ich jedoch ordentliche Pakete schnüren und meinen Quellcode vor dem unbedarften Blicken schützen (Decomp etc. ist klar, es geht mir um Grundsätzliches)? Ich habe mir mal Eric und Calibre angeschaut und festgestellt, dass bei Eric komplett alle Files als Quellcode vorliegen was ich nicht besonders schön 'für echte' Anwendungen finde! Bei Calibre sieht die Sache schon anders aus, aber wie macht man so etwas ohne dass der User erst mal Python installieren muss? PY2EXE wird ja nicht mehr weiter entwickelt oder?

- Mit welcher IDE - ich komme von MS und .NET und brauche eine richtige IDE - sollte man starten (kostenlos)? Hab mir schon einiges angeschaut, bin mir aber total unsicher was der richtige Weg ist. Wenn ich es richtig verstehe ist die GUI Entwicklung ja immer unabhängig und separat mit anderen Tools zu machen, im Gegensatz zu .NET?

- Zusätzlich interessiert mich die Web Entwicklung unter Python. Dort sollte man auf jeden Fall auf Django setzen oder?


Danke für jeden Tipp oder Hinweis, denn ich irre im Moment etwas im Python-Nebel planlos umher,
Steffen
deets

Ein paar unsortierte Antworten:

- Eric ist FOSS - da den Quellcode zu verstecken ist ziemlich sinnlos. Du kannst aber natuerlich nur die .pyc-Files distributieren
- py2exe ist AFAIK nicht tot, aber falls doch - dann nicht die einzige Moeglichkeit. So simpel & einfach wie mit Visual Studio einen Installer zu bauen ist aber wohl nix.
- Django ist nur eine von vielen Alternativen - und sicher nicht "auf jeden Fall" zu benutzen. Aber ein Fehler damit einzusteigen ist es auch nicht, insofern.. doch zu dem Thema gibt's hier & anderswo ausreichend Diskussionen.
- Selbiges gilt fuer die GUI-Frage. Wenn dein Ziel eh Windows ist, mag vielleicht sogar wx eine gute Idee sein - auch wenn ich selbst immer zu Qt greifen wuerde. Die wx-Api ist nicht besonders "pythonisch". Doch wie gesagt - auch dazu gibt's geballte Meinungsaeusserungen hier.
nomnom
User
Beiträge: 487
Registriert: Mittwoch 19. Mai 2010, 16:25

SteffenM hat geschrieben:auch auf Gefahr, dass ich erschlagen werde
Das ist ein Forum, das dazu da ist, Fragen zu stellen. Also: Nein, wir töten dich nicht deswegen. ;)
- Ich möchte ein Python Projekt vorrangig für Windows starten und benötige dazu ja ein GUI Framework mit Python Modul. Auf was soll ich da setzen QT mit PyOT oder doch mit PySide oder was ganz anderes?
Da du Closed-Source-Software schreiben möchtest, müsstest du auf PySide setzen, da PyQt dafür nicht benutzt werden darf. Eine Alternative wäre noch GTK, wobei das ziemlich schäbig für die Nutzer ist, auf Systemen ≠ Linux. (Installation etc.).
- Das ganze gleich mit 3.2 starten oder doch lieber noch auf 2.7 setzen?
PySide gibt es noch nicht für Python 3, falls das ausschlaggebend sein könnte.
- Es ist klar, dass Python eine Interpreter Sprache ist. Wie kann ich jedoch ordentliche Pakete schnüren und meinen Quellcode vor dem unbedarften Blicken schützen
Ordentlich wäre IMHO der komplette Quelltext im Klartext als Tar/ZIP-Archiv. Aber du denkst da wohl eher an .exe-Dateien. Da wären Py2exe, PyInstaller oder cx_Freeze Optionen-
Ich habe mir mal Eric und Calibre angeschaut und festgestellt, dass bei Eric komplett alle Files als Quellcode vorliegen was ich nicht besonders schön 'für echte' Anwendungen finde!
So ist das allerdings bei „echten Anwendungen“. ;) Wenigstens bei Open-Source-Anwendungen, die plattformunabhängig laufen sollen.
- Mit welcher IDE - ich komme von MS und .NET und brauche eine richtige IDE - sollte man starten (kostenlos)?
Mit gar keiner? Weiß da auch nicht so recht Bescheid, da ich für meinen Code keine IDEs brauche.
Hab mir schon einiges angeschaut, bin mir aber total unsicher was der richtige Weg ist. Wenn ich es richtig verstehe ist die GUI Entwicklung ja immer unabhängig und separat mit anderen Tools zu machen, im Gegensatz zu .NET?
Wenn ich dich richtig verstanden habe: Ja, das „Tkinter“-Modul von Python macht recht hässliche GUIs, und du musst demnach eine externe Bibliothek benutzen (wx, Qt, GTK).
- Zusätzlich interessiert mich die Web Entwicklung unter Python. Dort sollte man auf jeden Fall auf Django setzen oder?
Nein, das kann man so nicht sagen. Es gibt auch schlankere Module wie zum Beispiel „flask“ und „bottle“, mit denen man jedoch auch gut Webseiten entwickeln kann. ;)

Edit: Grammatik
Zuletzt geändert von nomnom am Dienstag 17. Januar 2012, 16:21, insgesamt 1-mal geändert.
SteffenM
User
Beiträge: 4
Registriert: Sonntag 15. Januar 2012, 16:44

- Ich möchte ein Python Projekt vorrangig für Windows starten und benötige dazu ja ein GUI Framework mit Python Modul. Auf was soll ich da setzen QT mit PyOT oder doch mit PySide oder was ganz anderes?
Da du Closed-Source-Software schreiben möchtest, müsstest du auf PySide setzen, da PyQt dafür nicht benutzt werden darf. Eine Alternative wäre noch GTK, wobei das ziemlich schäbig für die Nutzer ist, auf Systemen ≠ Linux. (Installation etc.).
Also gibt es nicht wirklich sinnvolle Alternativen zu QT oder?
- Das ganze gleich mit 3.2 starten oder doch lieber noch auf 2.7 setzen?
PySide gibt es noch nicht für Python 3, falls das ausschlaggebend sein könnte.
Laut http://developer.qt.nokia.com/wiki/PySi ... es_Windows gibt es das auch für 3.2?
- Es ist klar, dass Python eine Interpreter Sprache ist. Wie kann ich jedoch ordentliche Pakete schnüren und meinen Quellcode vor dem unbedarften Blicken schützen
Ordentlich wäre IMHO der komplette Quelltext im Klartext als Tar/ZIP-Archiv. Aber du denkst da wohl eher an .exe-Dateien. Da wären Py2exe, PyInstaller oder cx_Freeze Optionen-
Der unbedarfte Anwender will ein Setup und eine ausführbare EXE bzw. ein Link haben und nicht vorher erst einen Interpreter installieren bzw. manuell konfigurieren - darum geht es mir hauptsächlich. Macht so etwas mit Python anzufangen überhaupt Sinn?
Ich habe mir mal Eric und Calibre angeschaut und festgestellt, dass bei Eric komplett alle Files als Quellcode vorliegen was ich nicht besonders schön 'für echte' Anwendungen finde!
So ist das allerdings bei „echten Anwendungen“. ;) Wenigstens bei Open-Source-Anwendungen, die plattformunabhängig laufen sollen.
Mit was ist dann z.B. so etwas wie Calibre gemacht bzw. verpackt? Ich sehe als User kein Python Interpreter und muss auch nix manuell fummeln bzw. installieren.
Hab mir schon einiges angeschaut, bin mir aber total unsicher was der richtige Weg ist. Wenn ich es richtig verstehe ist die GUI Entwicklung ja immer unabhängig und separat mit anderen Tools zu machen, im Gegensatz zu .NET?
Wenn ich dich richtig verstanden habe: Ja, das „Tkinter“-Modul von Python macht recht hässliche GUIs, und du musst demnach eine externe Bibliothek benutzen (wx, Qt, GTK).
Ich meinte eigentlich eine IDE die GUI Design und eigentliche Programmierung unterstützt! Unter .NET kann ich dann automatisch Events generieren und brauche nur meinen eigentlichen Code einzufügen etc.!
- Zusätzlich interessiert mich die Web Entwicklung unter Python. Dort sollte man auf jeden Fall auf Django setzen oder?
Nein, das kann man so nicht sagen. Es gibt auch schlankere Module wie zum Beispiel „flask“ und „bottle“, mit denen man jedoch auch gut Webseiten entwickeln kann. ;)
OK, Danke!


Gruß, Steffen
deets

Wie schon erwaehnt - py2exe & co koennen Installer bzw. Executables generieren. Und eine voll integrierte IDE wie unter .NET wirst du nicht bekommen. Qt macht Design + Signal/Slot-Connection im QtDesigner, aber Editieren + Projektverwaltung macht man extra - zB mit Eric, oder PyDev, oder Emacs oder oder oder.
Benutzeravatar
snafu
User
Beiträge: 6738
Registriert: Donnerstag 21. Februar 2008, 17:31
Wohnort: Gelsenkirchen

Und eine automatisch generierte `setup.exe` wirst du unter Python auch nicht so ohne Weiteres erhalten. Es gibt neben Py2EXE zwar noch Alternativen, wie z.B. PyInstaller, jedoch kümmern die sich AFAIK nur um die Erstellung eines ausführbaren Programms, nicht um eine Setup-Datei. Wenn dir sowas wichtig ist, dann ist Python - bei allem Komfort, was die Sprache an sich angeht - möglicherweise doch nicht das Richtige für dich. Oder sagen wir mal: Du wirst beim Umstieg wohl ein paar Vorteile gegen ein paar Nachteile eintauschen müssen. Es kommt halt stark auf die eigenen Prioritäten an.

Mein Vorschlag: Gib Python als Sprache erstmal eine Chance und überlege dir dann, ob du dauerhaft damit arbeiten möchtest. :)
SteffenM
User
Beiträge: 4
Registriert: Sonntag 15. Januar 2012, 16:44

Danke, werde mich noch ein wenig umschauen und gut überlegen ob Python wirklich was für mich ist!

@snafu: Ich habe der Sprache ja schon eine Chance gegeben und ein wenig damit gespielt. Sieht soweit auch echt gut aus, aber das Thema GUI und fertige Anwendung auch für einen nicht Python-Spezi gefällt mir bisher nicht wirklich ...

Gruß, Steffen
jerch
User
Beiträge: 1669
Registriert: Mittwoch 4. März 2009, 14:19

Für einfache Distribution unter Windows als executable sind py2exe, pyinstaller etc. ganz brauchbar. Für einen Installer kannst Du ja auf kostenlose Tools wie "Inno Setup" setzen, die die mit pyinstaller erstellte ausführbare Datei resp. Programmordner verpacken und registry-Schlüssel und andere Setupaufgaben vornehmen.

Eine vollintegrierte IDE, die alle möglichen Belange Deiner Toolchain verbindet, gibt es nicht für Python. ERIC versucht, dieser Idee nahe zu kommen, allerdings habe ich ERIC selbst nie produktiv verwendet, da mir die Editorkomponente mit Codefolding etc. auf meinem betagten Rechner zu langsam war.

GUI-Toolkits wurden Dir schon genannt, persönlich würde ich zu Qt greifen und die Entscheidung PySide vs. PyQt von den Lizenzbestimmungen abhängig machen. Du kannst PyQt auch für kommerzielle Produkte verwenden, müsstest dann halt die Lizenz hierfür erwerben. PySide hat diese Einschränkung nicht, ist dafür aber weniger "vollständig" (uic-Modul und ein paar andere low-level Klassen fehlen).
Egal welches GUI-Toolkit Du einsetzt, musst Du Dich mit deren Paradigmen auseinander setzen. Da die Toolkits originär nicht in Python sind, weichen diese schonmal vom pythonischen Weg ab. Für Qt z.B. solltest Du basale Quelltext-Schnipsel in C++ lesen können (Qt Dokumentation).
Für alle großen GUI-Toolkits gibts Interface-Builder, Qt bringt diesen als QtDesigner gleich mit.
War das jetzt zuviel Qt-Werbung? :oops:

Bei Python an sich würde ich eher zum 2er Zweig greifen (Python 2.7). Die Flut der Module hast Du richtig erkannt, allerdings sind einige der wirklich guten und häufig eingesetzten Module noch nicht auf Python 3.x portiert. Da Du als Python-Neuling die Modullandschaft wahrscheinlich noch nicht überschaust, bist mit dem 2er-Zweig vorerst auf der sicheren Seite.

Zum Thema Webframework: Die Genannten (Django, bottle, flask) unterscheiden sich zum Teil sehr stark vom Funktionsumfang, da ist es schwierig eine Empfehlung abzugeben. Prinzipiell ist Django eine gute Wahl, wenn Du es eher "full featured out of the box" haben willst. Mit anderen Frameworks, die näher auf WSGI aufsetzen (WSGI ist Pythons Standardisierung für Webapplikationen), hast Du mehr Freiheiten und mitunter bessere Performance, aber auch einen höheren Implementationsaufwand.
lunar

@SteffenM: Ich würde Dir angesichts Deiner Vorerfahrung und Deiner Anforderungen eher dazu raten, C# zu lernen. Diese Sprache ist ebenfalls gut, Python sogar in Manchem recht ähnlich, wird unter Windows aber wesentlich besser unterstützt, eben da es die Standardsprache für Windows-Anwendungen ist. Etwas vergleichbares zu VisualStudio gibt es für Python schlicht nicht, du musst bei Python immer mehrere Werkzeuge nutzen, die je nach Projekt und GUI-Toolkit auch variieren können, und meist wenig bis gar nicht integriert sind.

C# bringt Dir für Windows einfach mehr, und ist auch einfacher zu erlernen, da Du auf Deinem vorhandenen .NET-Wissen aufbauen kannst, anstatt vollständig neu lernen zu müssen. Falls Du partout Python lernen möchtest, dann beginne vielleicht erst einmal mit IronPython, so kannst Du zumindest für den Anfang weiterhin mit .NET arbeiten, und Dich so vollständig auf die Sprache konzentrieren, anstatt parallel Sprache und neue Bibliotheken zu lernen.
Andev
User
Beiträge: 24
Registriert: Dienstag 17. Januar 2012, 15:55

SteffenM hat geschrieben: - Mit welcher IDE - ich komme von MS und .NET und brauche eine richtige IDE - sollte man starten (kostenlos)? Hab mir schon einiges angeschaut, bin mir aber total unsicher was der richtige Weg ist. Wenn ich es richtig verstehe ist die GUI Entwicklung ja immer unabhängig und separat mit anderen Tools zu machen, im Gegensatz zu .NET?
Da wären zum Beispiel PyDev, das integriert Dir Python in eine Eclipse-Umgebung und ist schon recht ausgereift, oder die Python Tools for Visual Studio, mit der Du zumindest noch die Visual Studio-Umgebung nutzen kannst. Alternativ natürlich noch die Python-Implementierung IronPython, das sich grundsätzlich in das .Net-Framework integriert. Vor allem das letzte könnte möglicherweise für Deinen Anwendungsfall interessant sein.
JonasR
User
Beiträge: 251
Registriert: Mittwoch 12. Mai 2010, 13:59

Wenn du vorher in VisualStudio geproggt hast solltest du dir mal http://pytools.codeplex.com/ anschauen ;)

€ Eine Sekunde zu langsam :D
SteffenM
User
Beiträge: 4
Registriert: Sonntag 15. Januar 2012, 16:44

Auf jeden Fall ist die Community bei Python echt super ... ;-)

Danke für die Hilfe und Denkanstöße!

Steffen
Benutzeravatar
snafu
User
Beiträge: 6738
Registriert: Donnerstag 21. Februar 2008, 17:31
Wohnort: Gelsenkirchen

Ich finde, sozusagen "pragmatisch" gesehen, ist Python eher für die Nutzung unter Linux-Systemen geeignet. Zwar gibt es ausreichend Funktionalität/Bibliotheken für Windows und vieles aus der Standardbibliothek wird bewusst plattformübergreifend gehalten, aber das ganze Drumherum, was man als Windows-Benutzer vielleicht eher erwartet, als wenn man Linux gewohnt ist, fällt halt weg. Wie schon gesagt: Das große allumfassende Gesamtpaket als IDE gibt es leider derzeit nicht. Auch der GUI-Bau fühlt sich unter Python ein bißchen fremd an. Zudem lädt die Sprache IMHO eher zum Bau freier Software ein, als zu kommerziellen Closed-Source Produkten. Wenn man hinter dieser Philosophie steht, ist es optimal, ansonsten wird man da sicherlich seine Schwierigkeiten haben.

Eine Ausnahme bildet - soweit ich das beurteilen kann - die Nutzung von Python im (natur-)wissenschaftlichen Kontext oder z.B. als Skriptsprache für Spiele oder generell als Skriptsprache innerhalb von Programmen, die einfache Möglichkeiten zur automatischen Erledigung von irgendwelchen Aufgaben bieten sollen. Ansonsten ist ein in purem Python geschriebenes Standalone-Programm, was wie gesagt in der Entwicklung und im Vertrieb gewisse "Industrie-Standards" erfüllen soll, zumindest in Bezug auf Windows etwas, sagen wir mal, komplizierter zu realisieren. Das muss man - ganz ohne Fanboy-Gehabe - einfach so sagen. Zumindest sehe ich das so.
Benutzeravatar
C4S3
User
Beiträge: 292
Registriert: Donnerstag 21. September 2006, 10:07
Wohnort: Oberösterreich

Wie wäre es denn mit
IronPython und SharpDevelop?

Sharpdevelop bringt einen GUI-Builder mit, der auch mit IronPython funktioniert, man kann damit fertige Pakete schnüren, auf alle Klassen des .Net-Frameworks zugreifen, .net-Assemblies importieren und nutzen und es ist auch möglich über einen zusätzlichen Import in IronPython Standard-Module aus einer CPython 2.x Installation zu importieren.
Ist vielleicht zum Lernen von Python nicht die allerbeste Wahl, da es zwischen IronPython & CPython doch auch Unterschiede gibt, aber ich halte es trotzdem für brauchbar, wenn man Windows als Zielplattform hat.


http://community.sharpdevelop.net/blogs ... brary.aspx
Gruß!
Benutzeravatar
Hyperion
Moderator
Beiträge: 7478
Registriert: Freitag 4. August 2006, 14:56
Wohnort: Hamburg
Kontaktdaten:

Ich möchte noch mal auf das kleine "t" von Qt hinweisen - ja, ist pingelig, aber ich hasse dieses "QT" überall :-D
encoding_kapiert = all(verstehen(lesen(info)) for info in (Leonidas Folien, Blog, Folien & Text inkl. Python3, utf-8 everywhere))
assert encoding_kapiert
JonasR
User
Beiträge: 251
Registriert: Mittwoch 12. Mai 2010, 13:59

Ist QT nicht QuickTime? :D
Antworten