Seite 1 von 1

Kann Python das?

Verfasst: Freitag 15. April 2016, 15:59
von PawelPopolski
Hallo,

wir benutzen im Moment für eine Aufgabenstellung in einem Projekt eine recht eingeschränkte und individuelle Excel VBA Lösung und wollen diese auf professionellere und "breitere" Füße stellen um sie auch ohne großen Anpassungsaufwand in anderen Projekten nutzen zu können.

Ich bin nun dabei die zu verwendende Programmiersprache zu bestimmen. Aufgrund der Verbreitung und (zumindest in fast allen Quellen) beschriebenen Einfachheit beim Einstieg, ist Python in die nähere Wahl gekommen. Allerdings bin ich mir der Stärken und Möglichkeiten von Python noch nicht bewusst, wohl auch, weil mir von den ganzen zusammengetragenen Informationen der Kopf schwirrt, und dachte, ich frage hier einfach mal nach.

Was unsere Anwendung (umfassend am besten als Terminplanungstool) am Ende können/haben muss:

1. eine ansprechende GUI :-)
2. Lauffähigkeit auf allen verwendeten Systemen (Win 7 , Win 8, Win 10 (jeweils in 32 und 64 bit-Versionen) oder Mac)
3. Datenexport/import in/von folgende(n) Programmen: Excel, Access, SQL Datenbank
4. Webinterface zur dezentralen Eingabe und Bearbeitung der Daten
5. geringer Installationsaufwand (Idealfall wäre hier eine automatisierte Installationsroutine)
6. annehmbare Geschwindigkeit - ja, das ist subjektiv, aber wenn ich in der Excelanwendung einen 3 Jahreskalender, in dem alle relevanten Tage, sowie Feiertage und Wochenenden farbig markiert sind, ca. 10 Sekunden auf das Öffnen warte, halte ich das für langsam.

Vielleicht könnt ihr mir ja sagen, ob die Anforderungen grundsätzlich erfüllbar sind. Grundsätzlich heisst für mich, dass ich keine exotischen Zusatztools und Programmen suchen/kaufen muss bzw. dass ich plötzlich feststellen muss, dass eine Anforderung nicht zu verwirklichen ist.

Im Voraus schon mal vielen Dank für euer Feedback,
PawelPopolski

Re: Kann Python das?

Verfasst: Freitag 15. April 2016, 16:10
von BlackJack
@PawelPopolski:

Ad 1. Im Grunde ja, allerdings stellt sich an der Stelle die Lizenzfrage was Du verwenden kannst und was nicht, beziehungsweise ob Du eine kommerzielle Lizenz kaufen kannst/willst/darfst. Oder ob Du auch mit einer weniger ansprechenden GUI zufrieden bist. :-)

Ad 2. Sollte kein Problem sein.

Ad 3. Access ist unter Linux ein Problem, da müsstest Du vielleicht mal schauen wie das bei Mac aussieht. Bei Excel kommt es so ein bisschen auf den Umfang der Funktionalität an. Und für SQL Datenbanken braucht man eine Anbindung. Die gibt's für die gängigen Datenbanken, aber es kann ja sein, dass Du etwas exotisches einsetzt.

Ad 4. Es gibt Webrahmenwerke in verschiedenen Grössen, von einer „all inclusive“-Lösung wie Django bis hin zu Mikrorahmenwerken wie Bottle oder Flask.

Ad 5. Um sich Installer zu basteln gibt es mehrere Werkzeuge für Windows und AFAIK auch etwas für Mac.

Ad 6. Solange Du kein Numbercrunching in reinem Python-Code betreiben möchtest, sollte Geschwindigkeit eher kein Problem darstellen.

Re: Kann Python das?

Verfasst: Freitag 15. April 2016, 16:40
von PawelPopolski
Hallo BlackJack,

erst mal danke für die superschnelle Antwort...die natürlich wieder die ein oder andere Frage aufwirft bzw. eines Kommentars bedarf :-)

zu Ad 1. Alles was ansprechender ist als Userforms aus der MS Officewelt und zusätzlich noch als nice to have die Möglichkeit biete z.B. ein kleines Menüband oder Dropdownmenü zu erstellen ist willkommen. Wir wollen keinen Preis für Kreativität sondern (wenn überhaupt) für Funktionalität gewinnen. Wenn diese dann noch nett daherkommt...auch nicht schlecht :-) Aber was hat es mit den Lizenzen auf sich. Ich dachte Python ist grundsätzlich "lizenzlos" und somit kostenfrei?!

zu Ad 2. abgehakt

zu Ad 3. Exotisch ist nicht unser's, also sollte es hier keine Probleme geben. Die Funktionalität wäre einfach nur das Speichern von Datensätzen im zweistelligen Bereich mit einer Breite von evtl. 50 Feldern (Date, Byte, String, Text), also auch nichts weltbewegendes.Tendenz geht zu Excel um später noch Auswertungen fahren zu können. SQL wäre im Hinblick auf webbasierte Bearbeitung wichtig.

zu Ad 4. und schon wieder ein paar neue Begriffe, zu denen ich was lesen muss :-)

zu Ad 5. abgehakt

zu Ad 6. abgehakt

Gruß,
PawelPopolski

Re: Kann Python das?

Verfasst: Freitag 15. April 2016, 16:48
von noisefloor
Hallo,

zu 1.: GUI Programmierung (mit Python) braucht relativ viel Code, dafür hast du dann aber auch die volle Kontrolle. Außerdem sollten man die Objektorientierung von Python zumindest grundlegend verstandenen haben, sonst kommt man bei der GUI Programmierung nicht weit, da hier i.d.R. viel mit abgeleiteten Klassen und Vererbung gearbeitet wird. Außerdem brauchst du ein GUI Rahmenwerk, was auf den genannten Plattformen gut läuft, und das ist IMHO Qt. Was dann zur von BlackJack gestellten Lizenzfrage führen kann, da die PyQt Bindings dual lizensiert sind.

Aber wenn ihr so wie so ein Webinterface braucht, wozu braucht ihr dann noch eine (lokale) GUI? Könnt ihr das ganze nicht komplette als Web-basierte Server-Client Lösung umsetzen?

Gruß, noisefloor

Re: Kann Python das?

Verfasst: Freitag 15. April 2016, 17:04
von BlackJack
@PawelPopolski: Lizenzlos ist keine Software die Du benutzen kannst (ausser selbst geschriebene), denn die Lizenz erlaubt Dir als Benutzer ja erst die Software zu verwenden.

Python selber steht unter einer Lizenz die Dir im Grunde keine besonderen Auflagen stellt. Aber andere Module oder Anbindungen können unter anderen Lizenzen stehen. Tun sie in der Regel sogar, weil die Python-Lizenz vom Wortlaut sehr an Python gebunden ist, so dass man die kaum für etwas anderes verwenden kann ohne sie umschreiben zu müssen.

Qt beziehungsweise die Python-Anbindung an Qt ist entweder GPL, mit den Konsequenzen die sich daraus ergeben, oder man muss eine kommerzielle Lizenz kaufen, wenn man das nicht möchte.

Bei exotisch meinte ich nicht das Datenbankschema sondern das DBMS. Also zum Beispiel Informix wäre ein DBMS was nicht so leicht anzubinden ist. Andererseits sollte man unter Windows alles verwenden können für das man ODBC-Treiber bekommt.

Re: Kann Python das?

Verfasst: Freitag 15. April 2016, 17:13
von PawelPopolski
Hallo noisefloor,

danke für die warnenden Worte.

Warum Beides?
Einserseits arbeiten wir institutsintern in Teams. Hier wäre die webbasierte Lösung problemlos durchführbar. Allerdings arbeiten wir auch global mit Partnern, die uns zuarbeiten und die Daten selbst erfassen und auswerten UND leider keine 100%ige Anbindung ans Internet gewährleisten können (ja, das gibts noch :-(). Hier käme die lokale GUI ins Spiel.

Zwei Frage die mir noch eingefallen sind:
- Gibt es Lösungen für die Anbindung, sprich Übertragung von Terminen, in Outlook oder andere gängige Mailprogramme?
- Wie sieht es mit der Gestaltung und dem Ausdruck von Reports aus? Ich weiss, die Frage ist etwas allgemein gestellt, aber stellt euch vor, ich habe z.B. einen Terminplan erstellt, den ich schön auf dem Bildschirm betrachten kann...vielleicht möchte ich ihn ja auch als Ausdruck in einen Bericht übernehmen oder eine PDF daraus machen, die ich per Mail versenden kann...

Gruß,
PawelPopolski

Re: Kann Python das?

Verfasst: Freitag 15. April 2016, 17:34
von noisefloor
Hallo,

IMHO ist die Interaktion mit allem, was von Microsoft ist, unter Python schwierig. Eine Ausnahme mag das Lesen von Excel-Tabellen sein, dass entsprechende Python-Modul soll ganz brauchbar sein.

PDF: Es gibt das Python-Modul ReportLab, mit dem du PDFs erzeugen kannst. Das Spektrum reicht von "einfach und schnell" bis "komplex". Wenn ihr Qt als Framework benutzt gibt es wohl auch die Möglichkeit, in PDFs zu drucken. Wie das von der Optik ist, also ob das Ergebnis ok aussieht, weiß ich nicht, habe ich selber noch nie genutzt.

Gruß, noisefloor

Re: Kann Python das?

Verfasst: Freitag 15. April 2016, 17:37
von noisefloor
Hallo,

noch was: wenn die Datenerfassung über verschiedene, unabhängige Programme / Oberflächen erfolgt, dann müsst ihr euch wohl auch zwangsläufig Gedanken über das Zusammenführen von Daten inkl. Konflikmanangement machen. RDBMS System sind für so was eher nicht ausgelegt, jedenfalls nicht ootb.

Gruß, noisefloor

Re: Kann Python das?

Verfasst: Freitag 15. April 2016, 18:41
von PawelPopolski
uhhh...vielleicht sollten wir doch mit dem Excel Tool weiterarbeiten :-)

Aber mal ernsthaft...Gibt es eine andere Programmiersprache, die das alles besser einfacher komfortabler kann?

Gruß,
PawelPopolski

Re: Kann Python das?

Verfasst: Freitag 15. April 2016, 20:04
von noisefloor
Hallo,
Gibt es eine andere Programmiersprache, die das alles besser einfacher komfortabler kann?
Das Problem sind eher die Ausgangsbedingungen und was du vorhast.

Wenn du Excel und Access als Datenquelle einsetzen willst oder musst, dann werden da so gut wie alle Programmiersprachen mehr oder minder viele Probleme haben. Probleme im Sinne von "umständlich und nicht einfach". Außer, du nimmst was, was von MS kommt die direkt mit Excel und Co kommunizieren kann. Also z.B. VB.

Das andere, grundsätzliche Problem ist, wenn du Daten aus zwei Quellen zusammenführen musst. Dann landest du zwangsläufig bei so Sachen wie Konfliktmanagement - das ist nicht Python-spezifisch.
Es kommt halt drauf an, wie oft ein Konflikt vorkommen könnte oder ob doppelte Daten "schlimm" sind oder nicht.

Wenn ihr bei euch so wie so was erneuern wollt wäre es vielleicht auch ein guter Zeitpunkt drüber nachzudenken, ob man das "wie" der Datenspeicherung nicht auf überarbeiten möchte :-)

Gruß, noisefloor

Re: Kann Python das?

Verfasst: Samstag 16. April 2016, 04:41
von mutetella
PawelPopolski hat geschrieben:[…] leider keine 100%ige Anbindung ans Internet gewährleisten können (ja, das gibts noch :-(). Hier käme die lokale GUI ins Spiel.
Wobei man ein bereits erstelltes Webinterface ja auch offline anbieten kann. Andernfalls müsste man die UI doppelt erstellen und pflegen, was sich doch vermeiden ließe…

Re: Kann Python das?

Verfasst: Samstag 16. April 2016, 08:27
von nezzcarth
PawelPopolski hat geschrieben:uhhh...vielleicht sollten wir doch mit dem Excel Tool weiterarbeiten :-)

Aber mal ernsthaft...Gibt es eine andere Programmiersprache, die das alles besser einfacher komfortabler kann?
Die Sache ist meiner Meinung nach halt, dass das, was du in deinen Posts so zu deinen Vorstellungen bzgl. der Software preis gibst, von der Denkweise her in dieser "Windows-Welt" verhaftet ist. Heißt nicht, das Python das überhaupt nicht kann, aber es wäre halt nicht die Sprache, die ich wählen würde, um irgendeine "Business-Software" zu schreiben, die über eine ausgefeilte GUI verfügt, perfekt mit Microsoft-Produkten interagiert und über einen Installer auf's System gebracht wird.

(Ich vermute mal, andere sehen das vielleicht etwas anders :) )

Du schreibst, dass Python in die engere Auswahl gekommen ist -- Welche Sprachen denn noch?

Re: Kann Python das?

Verfasst: Samstag 16. April 2016, 09:14
von __deets__
Ich wuerde auf C# setzten. Das ist im MS-Universum verwurzelt, kann aber - wenn die Notwendigkeit wirklich da ist - auch plattformuebergreifend genutzt werden. Das geht nicht ohne Muehen (so weit ich das sehen kann), aber ich kenne Programme, die das schaffen.

Re: Kann Python das?

Verfasst: Samstag 16. April 2016, 13:28
von PawelPopolski
Hallo,
@nezzcarth:
Du findest mich in der Windows Welt verhaftet...Jetzt hast du mich erwischt. :-)
Das ist nun mal die Welt, in der xx% (ich werde jetzt keine subjektive Schätzung abgeben, um hier keine end- und sinnlose Diskussion anzufeuern) der PC-Anwender leben und wodurch deren EDV-Denkweise geprägt ist.

Aber zu deiner Frage:
In die nähere Wahl ist noch JAVA, C# und VB gekommen.

Wenn ich ehrlich bin, würde ich mich für VB entscheiden. Wir haben div. VBA Progger im Haus, die sich hier sicher schnell einarbeiten könnten. Problem...natürlich...die Kosten. Wenn ein Verantwortlicher für die Entwicklungsumgebung x € locker machen soll und ein Informatik Student erzählt ihm beim Mittagessen, dass es doch auch ohne diese Anschaffungskosten geht, dann steht man plötzlich da und muss nach Alternativen suchen.

Die Frage ist, ob es wirklich wirtschaftlicher ist. Was kosten die Recherchen? Was kosten anfallende Schulungen bzw. Einarbeitungszeiten? Hätten wir beim Einsatz von VB wirklich eine Zeit und somit Kostenersparnis? Etc.

Ich will das hier nicht weiter vertiefen. Meine Fragen wurden entsprechend beantwortet und ich werde die Pros und Contras in unsere Entscheidungsmatrix einbeziehen.

Ich Danke allen Beteiligten vielmals für ihre Zeit und ihre objektive Einschätzung (welche so sicher nicht in jedem Forum existiert).

Grüße,
PawelPopolski

Re: Kann Python das?

Verfasst: Samstag 16. April 2016, 13:43
von noisefloor
Hallo,

bzgl. der Kosten:
Was du ja auch beachten musst: Python kostet nichts, die allermeisten Module stehen unter eine freien / liberalen Lizenz und es gibt auch leistungsfähige IDEs als freie Software.

Aber: wenn du das selber (für lau) machst, kostet es deine Arbeitszeit / Freizeit. Da du / ihr bei Null anfangt, kann das ziemlich viel sein. Außerdem scheint ihr die Software ja auch in irgendeiner Form produktiv zu nutzen. D.h. wenn da was nicht läuft oder schlecht läuft oder vielleicht auch Datenverlust aufgrund von falsch programmierter Software droht, dann kann das ganz schnell ganz viel kosten. Das ist nicht unbedingt nur monetär zu sehen, sondern auch was z.B. den Fortschritt des eigenen Forschungsprojekts angeht oder auch nur ganz simpel die Reputation, welche sich dann ggf. auf Folgeprojekte auswirkt.

Also einfach nur zu sagen "wir wollen Python, weil das kostet nichts" - das ist zu kurz gedacht.

Es gibt ja nicht umsonst jede Menge Firmen, die (viel) Geld mit Dienstleistungen rund um freie Software verdienen :-)

Gruß, noisefloor

Re: Kann Python das?

Verfasst: Samstag 16. April 2016, 15:10
von BlackJack
@PawelPopolski: Wobei das „in der Windows Welt verhaftet“ IMHO schon ein Problem ist, was die Zukunft angeht und Du da vielleicht mehr % an Benutzern verortest als es tatsächlich sind. Es geht dabei nämlich nicht darum Windows benutzen, klar das tun viele, sondern darum Microsoft/Windows-Only-Technologien zu benutzen die schlecht mit anderen zusammenspielen. Access zum Beispiel wäre etwas was ich so schnell wie möglich aus eigenen Projekten raus bekommen wollen würde. Das ist ein Mühlstein wenn man etwas schreiben will das Cross-Plattform läuft.

Re: Kann Python das?

Verfasst: Samstag 16. April 2016, 15:19
von PawelPopolski
Hallo,

genau das sind die Gedanken die ich mir schon gemacht bzw. Argumente, die ich mir schon zurechtgelegt habe.

Jetzt ist Überzeugungsarbeit gefordert.

Gruß,
PawelPopolski