Sinnvolle Arbeitsumgebung

Probleme bei der Installation?
Antworten
Stefan F
User
Beiträge: 2
Registriert: Mittwoch 29. Juli 2020, 21:53

Hallo zusammen,

ich möchte mich kurz vorstellen:
kein Newby was das Programmieren angeht
aber Newby was Python angeht.
Ich habe Assembler, einige Basic Dialekte, Clipper (xBase Compiler) und Produktkonfiguratoren programmiert. Mit Einführung der OOP habe ich das aktive Programmieren, bis auf den Produktkonfigurator, aufgegeben und den PC nur noch als ausführendes Werkzeug für Applikationen genutzt.

Früher hat man sich eine 'Sprache' gekauft, Pascal oder C und hat diese dann mit IDE bekommen. Allen nötigen Bibliotheken, Compiler, Debugger usw. Nur wirklich eingefleischte Programmieren haben ggf. noch einen speziellen Programmierereditor bezogen.

Ich habe jetzt bald eine Woche damit verbracht in dieser Unmenge von Angeboten aus dem Internet nach diesen IDEs, Editoren, mit Debuggern und Bibliotheken zu suchen.

Es gibt sicher Dutzende 'Lehrgänge' mit den üblichen 'Hello World'-Progammen und den darauf aufbauenden Beispielprogrammen für den Aufbau von Schleifen, Fenstern, Eingaben, ausgaben usw.usw.

Nach verschiedenen Anläufen und natürlich Rückschlägen bin ich jetzt bei dieser Umgebung gelandet:

Basissystem Linux OpenSuSe Leap 15.1 (OpenSuSe ist mein Standard-OS zu hause seit über 15 Jahren) Mit Windows arbeite ich nur noch beruflich.
Visual Studio Code 1.46.1 als IDE für Python.
Python 3.6, Conda 3.8.4
Bibliotheken Ktinker, PySimpleGUI, insert

Das Projekt, das ich nun wieder zum Programmieren angehen möchte, ähnlich wie ein Produktkonfigurator, ist eine Standard-GUI
(Datei - Bearbeiten - Ansicht - Extras - Hilfe)
Diese Gui soll einem Anwender einen 'Fragenkatalog' zur Beantwortung anbieten. Dazu gehören dann auch ein paar Stammdaten, Werte aus vorgegebenen Tabellendaten, kurze selbst zu schreibende Texte.
Diese Daten sollen als 'Fall' abgespeichert werden können, wieder aufgerufen werden können. Die Daten sollen lokal verschlüsselt abgespeichert werden können. Der Anwender soll ggf. mehr als einen, völlig' vom anderen unabhängigen Fall erstellen können und auch diesen speichern und wieder aufrufen können. Er könnte ja auch mehr als einen 'Anlauf' zur Fertigstellung eines Falles benötigen.
Ziel (also das Produkt) was entstehen soll, ist eine MS-Worddatei, die die Stammdaten Texte, bereits vorgegebene Texte zu einem einzigen Worddokument nach einer von mir vorgegebener Struktur zusammen fassen. Eine Nacharbeit außerhalb des Programms muss gegeben sein, daher brauche ich kein PDF-Export, kein Excel-Export usw.

Warum beschreibe ich das so ausführlich ? Ich erhoffe mir aus der Community ein paar Anhaltspunkte die dafür benötigen und sinnvollen Bibliotheken, eine geeignete IDE und Werkzeuge zu nennen, die das Programm dann auf Windows 10-Rechnern und den meisten Linux PCs laufen lassen. Diese Trial & Errormethode empfinde ich einfach als zu ineffizient. Anstatt 2 oder 3 oder noch mehr Python from Scratch Kurse zu machen, bei dieser irrwitzigen Auswahl, sehe ich es als sinnvoller und produktiver an dieses Projekt direkt in seiner tatsächlichen Größe anzugehen und dort das Learning by Doing zu absolvieren. Ich habe ja schließlich eine sehr klare Vorstellung von dem was ich tun möchte, da muss ich echt nicht etwas programmieren, das mir z.B. Zahlenkolonnen als schöne Grafik ausgibt, nur weil ich da etwas zu Python lernen könnte.

Deutsch oder Englisch ist dabei kein Problem. Sollte das Ganze nur in Englisch gehen, mache ich auch das. Ein Großteil meines Englischen Wortschatzes stammt aus der IT, bis zu einem gewissen Zeitpunkt gab es einfach noch keine deutschen Handbücher oder Produktbeschreibungen :-)

Meine Bitte jetzt kurz zusammengefasst, ist es möglich mir für das oben beschriebene Projekt die Bibliotheken zu nennen, die Quellen, ob ich mit Visual Studio Code richtig liege und ggf. auch zu bestätigen, dass Python überhaupt die richtige Platform für so etwas ist ?
Was nutzen ? PIP oder Conda ?
Wofür brauche ich Anaconda in meinem Projekt ? Nur um an conda zu kommen ?
Wozu brauche ich mehr als einen Namespace ? Conda gibt base als standard vor. Es wurde allerdings geraten mind. einen weiteren anzulegen, eben z.B. für mein Projekt..

Ich bin dankbar für jede Unterstützung, die mich loslegen lassen kann und zwar auf dieses Projekt bezogen ohne weiter 100rte von Dokumenten halb oder ganz lesen, bis klar wird, nicht geeignet. Ich scheu nicht das Lesen und reinknien in das alles, aber eben projektbezogen. Meine Adressliste im Browser ist schon so voll, dass ich hier auch kaum noch weiß, wo war jetzt der nützliche Tipp zum Wordexport oder zum Ablegen von Texten usw. usw.

Also schon mal Vielen Dank im Voraus. Ihr bekommt nie wieder eine so lange Mail, versprochen !

Stefan F
Benutzeravatar
__blackjack__
User
Beiträge: 12984
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

Tja, die Qual der Wahl. IDE oder Editor ist halt Geschmackssache. Frag zwei Leute und Du bekommst drei Empfehlungen. Das ist bei vielen Programmiersprachen eine separate Entscheidung welche IDE einem selbst mehr zusagt, oder ob es auch ein guter Editor tut. Vor allem weil man heutzutage eine IDE oder einen Editor oft nicht nur für *eine* Programmier- oder Auszeichnungssprache verwendet.

Wobei sich Deine Beschreibung von früher auch nicht so verallgemeinern lässt. Diese Erfahrung habe ich hauptsächlich unter DOS/Windows (und dem C64) gemacht. Bei anderen Systemen (und auch teilweise unter DOS bei einigen Sprachen) war es nicht ungewöhnlich, dass die "Sprache" einfach nur ein Compiler war und man sich den Editor dazu selbst (aus)suchen musste, oder das die "IDE" so primitiv war, dass man doch lieber den unabhängigen Editor mit mehr Funktionalität verwendet hat.

Alle nötigen Bibliotheken waren dann aber auch nur dabei wenn man eigentlich nichts benötigt hat oder bereit war alles selbst zu programmieren. Ansonsten gab es schon Bibliotheken zu kaufen oder als Public Domain, oder man hat den Code der heute in einer separaten Bibliothek stecken würde, aus Zeitschriften direkt ins eigene Programm abgetippt.

Klassische Debugger braucht man bei Python IMHO nicht wirklich. Logging, `type()`, `print()` oder Module wie `q` oder `icecream` haben mir bisher fast immer gereicht. Und natürlich Unittests, was dazu führt, dass man leichter testbaren Code schreibt. Einen klassischen Debugger habe ich in Python nur einmal gebraucht. Das war eine Portierung eines Algorithmus von BASIC-Quelltext mit mehreren verschachtelten Schleifen und vielen Indexvariablen und -zugriffen. Also sehr untypischer Code für Python.

Von `PySimpleGUI` würde ich persönlich abraten. Das Projekt versucht die ereignisbasierte Programmierung von GUIs wieder in einen lineare Programmablauf zurück zu zwängen, was letztlich gegen das GUI-Rahmenwerk programmieren ist. Das erfordert unschöne Hacks oder ist nicht wirklich robust.

Beim Ziel „MS-Worddatei“ könnte man noch überlegen ob das wirklich eine ”Word-Datei” sein muss, beziehungsweise was der Begriff bedeutet. Also ob es reicht wenn die Datei mit MS-Word bearbeitet werden kann. Denn dann kämen auch ODF-Dateien oder eventuell sogar HTML in Frage.

Ich denke man wird um einen guten Teil „Trial & Error“ nicht herumkommen. Das ist Teil der Softwareentwicklung, insbesondere wenn man sich auf neues Terrain begibt. Da muss man Bibliotheken und Technologien suchen und die bewerten, ggf. mit einem kleinen Prototypen.

Ein zum Programmieren geeigneter Editor reicht vielen Python-Programmierern. Wenn Dir VisualStudio-Code gefällt, dann spricht da nichts gegen.

An Basiswissen würde ich das Tutorial in der Python-Dokumentation durcharbeiten. Also wirklich durcharbeiten und nicht nur lesen. Mit den Beispielen ein bisschen im interaktiven Interpreter spielen um eine Gefühl für die Sprache zu bekommen. Wenn man schon Programmiererfahrung hat, dauert das auch nicht so lange. Statt der normalen Python-Shell würde ich eine ”aufgebohrte” empfehlen. IPython ist da beliebt. Das ist ein prima Werkzeug um mal kurz Code auszuprobieren und auch ”live” neue Bibliotheken zu erforschen. Mindestens eine IPython-Shell oder ein Jupyter-Lab im Browser habe ich eigentlich immer offen beim Programmieren.

Bei GUI-Rahmenwerken ist die Frage ob das jeweilige Rahmenwerk alles bietet was man braucht, ob die Lizenz zu eigenen Code passt, und wie man das auf der oder den Zielplattformen installiert bekommt. Eine Alternative ist manchmal auch eine Webanwendung zu schreiben. Wobei die nicht zwingend einen eigenen Server voraussetzt, man kann die ja auch lokal starten und im Browser anzeigen.
“Most people find the concept of programming obvious, but the doing impossible.” — Alan J. Perlis
__deets__
User
Beiträge: 14480
Registriert: Mittwoch 14. Oktober 2015, 14:29

Ich würde bei den Randbedingungen und Vorstellungen auch noch Lazarus ins Spiel bringen. Das hält das “Visual coding” Paradigma der 90er am Leben. Und viele Leute, die das damals gut fanden, tun das auch noch heute. Probleme, die man in Python dann hat, wie das bündeln zu einer EXE etc, GUI Builder etc, hat man dort nicht.
Stefan F
User
Beiträge: 2
Registriert: Mittwoch 29. Juli 2020, 21:53

Hallo __blackjack__ und hallo __deets__,

vielen Dank für Eure Zeit ! Danke für Eure Anworten ! Nun viellicht ist tatsächlich auch weniger mehr....

Ich gehe das noch ein Mal an. Im Moment bin ich ziemlich gefrustet, weil ich PySimpleGUI ums Verrecken nicht geladen bekomme :-)
import PySimpleGUI as sg
ModuleNotFoundError: No module named 'PySimpleGUI'
Could not find a version that satisfies the requirement psimplegui (from versions: ) No matching distribution found for psimplegui.

Beste gRüße

Stefan F
__deets__
User
Beiträge: 14480
Registriert: Mittwoch 14. Oktober 2015, 14:29

__blackjack__ hat ja schon was zum Thema pysimplegui gesagt. Ich wuerde das nicht einsetzen.

Und in deiner Fehlermeldung vermischst du hier augenscheinlich den Versuch, etwas zu importieren, mit der Fehlerausgabe von pip. Das macht es uns unnoetig schwer, bitte benenn das klarer, was was ist. Auch die code-tags sind hilfreich um die Darstellung besser zu machen.

Wenn die so, wie du sie da hingeschrieben hast, stimmt, dann hast du dich beim Paketnamen verschrieben. Schau mal genau hin.
Benutzeravatar
noisefloor
User
Beiträge: 3829
Registriert: Mittwoch 17. Oktober 2007, 21:40
Wohnort: WW
Kontaktdaten:

Hallo,

ich würde unter Linux auf keine Fall Anaconda nehmen. Grund: es ist einfach nicht nötig und wenn man was falsch macht bei der Konfiguration, kann man Probleme mit dem System haben (weil der Interpreter aus Anaconda gerne der Default-Interpreter sein möchte). Und Linux lässt sich Python über die Paketveraltung installieren und pip sowie venv laufen ootb einwandfrei.

Unter Windows nutze ich Anaconda, weil es da in der Tat einiges einfacher macht. Solange die kompatible Versionen der verwendeten Module verwendest _und_ keinen plattformspezifischen Code, sollte das alle funktiomieren.

Bzgl. GUI Programmierung: GUI Programmierung _ist_ aufwendig, dass ist nun mal so. Und wenn die GUI ein paar mehr Funktionen haben soll / muss, dann ist man mit den Frameworks, die Sachen "einfacher" machen (sollen), ziemlich schnell an der Grenze des machbaren. Und da bist du nach deiner Beschreibung definitiv.

Wenn es technisch möglich ist, würde ich das auch eher als Web-basierte Anwendung umsetzen und nicht mit einer lokalen GUI.

Gruß, noisefloor
tonikae
User
Beiträge: 90
Registriert: Sonntag 23. Februar 2020, 10:27

Was du suchst ist eigentlich ein typischer Fall von Cloud-Programming.
Man arbietet im Browser in einer Web-Umgebung mit einem Standard-Editor
Die Programme werden nicht lokal gespeichert sondern es bleibt alles
in der Cloud. Die Arbeitsumgebung basiert i.d.R. auf einer LINUX-VM und
Python und C sind vorinstalliert. Wenn etwas fehlt kann man es mit dem APK-Installer
installieren.Man kann auf alle Cloud-Dienste zugreifen(kann aber kostenpflichtig sein)
Man kann Daten auf einer Cloud lagern aber auf einer anderen bearbeiten
Man kann gezielt Zugriffsrechte für die Nutzer vergeben, kann eine eigene Webanwendung
drum herumbasteln...oder die Anwendung in andere Cloud-Anwendungen(z.B. Online-Office)
einbinden und noch ganz viel mehr.

Man muss sich nur mit dem Gedanken anfreunden nicht mehr lokal zu arbeiten.Man braucht
auch lokal nix mehr zu installieren.

Beispiel (Google Cloud - ist für 40Stunden pro Woche kostenlos. Das sollte für den Heim-/Hobby-Bedarf ausreichen)
Mit dem folgenden Link geht arbeiten, ohne das man ein Cloud-Projekt anlegen muss(Also kostenloser Privatanwender kann
man in der Google-Cloud maximal 12 Cloud-Projekte gleichzeitig offen haben...dann heisst es entweder kostenpflichtig
aufstocken oder ein anderes Projekt zumachen).

https://console.cloud.google.com/clouds ... shell=true

Wie auch immer: Im oberen Teil ist der Editor zu sehen...im unteren Teil ist die LINUX-Shell.Dort kann man fast alles machen
was man in einer Shell eben so macht.z.B. andere Programme nachinstallieren und dann damit arbeiten u.s.w.
Ist aber alles Online.

https://drive.google.com/file/d/1j_nVyc ... Lq6Rp/view
Antworten