Steuerung einer exe mittels Flask auf pythonanywhere

Django, Flask, Bottle, WSGI, CGI…
Antworten
Patrick1990
User
Beiträge: 116
Registriert: Freitag 3. Juni 2016, 05:45

Ich probiere derzeit das Simulationsprogramm FEMM aus einer Webseite heraus anzusteuern. Dazu habe ich zunächst ein ganz einfaches Skript erstellt. Bei Tastendruck auf einer Webseite sollte ein FEMM-Simulationsmodell mittels der Bibliothek pyfemm erstellt werden.
Auf der Festplatte klappt es mittlerweile auch.
Nun möchte ich das auch gern auf eine Webseite bekommen. Dazu habe ich zunächst zum Testen eine Seite auf pythonanywhere gehostet.
Beim Tastendruck kommt nun folgende Meldung:

Code: Alles auswählen

Exception: Wine binary not found in default path. Please define a path as openfemm(winepath='path/to/wine',femmpath='path/to/femm').
Nun ist ja die Frage, ob ich auf pythonanywhere überhaupt eine exe ausführen kann oder ob es eher ein Windows Web Server sein muss, damit das funktioniert?
Kann mir da jemand weiter helfen?
Benutzeravatar
__blackjack__
User
Beiträge: 13116
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

@Patrick1990: Da ist jetzt die Frage woher diese Ausnahme kommt. Sieht `pyfemm` das vor, das man die EXE per Wine ausführen kann, dann könnte es grundsätzlich auch mit Wine unter Linux funktionieren. Ich bezweifle allerdings, dass Pythonanywhere das anbietet und man wird das dort wohl auch eher nicht installieren können.
„All religions are the same: religion is basically guilt, with different holidays.” — Cathy Ladman
Benutzeravatar
noisefloor
User
Beiträge: 3856
Registriert: Mittwoch 17. Oktober 2007, 21:40
Wohnort: WW
Kontaktdaten:

Hallo,
Nun ist ja die Frage, ob ich auf pythonanywhere überhaupt eine exe ausführen kann oder ob es eher ein Windows Web Server sein muss, damit das funktioniert?
Die Fragen sind eher:

* läuft pyfemm unter Wine überhaupt? Der Fehlermeldung nach scheinbar ja.
* Kann man Software wie Wine unter Pythonanywhere installieren? Dafür bräuchtest du Zugriff auf die Paketverwaltung des Betriebssystem des Servers. Dafür ist Pythonanywhere aber AFAIK nicht konzipiert.
* Brauchst du wirklich einen Windows-Server oder "reicht" ein dedizierter Linuxserver, wo du vollen Zugriff auf das OS hast?

So oder so musst du dir beim letzten Punkt darüber klar sein, dass du dann _alles_ auf dem Server machen musst, also auch die Serverapplikation(en) an sich konfigurieren und absichern, Sicherheitspatches einspielen, später Logs durchschauen, ob dein Server Auffälligkeiten hat usw. Was man als Server-Admin halt so machen muss.

Deinen anderen Thread hatte ich so verstanden, dass du das Tool intern laufen lassen willst - mit Pythonanywhere bist du aber öffentlich. Dann musst du dir bei deiner Applikation auch noch Gedanken über das Usermanagement machen, damit nicht "jeder" deinen FEMM Service benutzen kann.

Gruß, noisefloor
Patrick1990
User
Beiträge: 116
Registriert: Freitag 3. Juni 2016, 05:45

Danke für eure Nachrichten.
Soweit ich weiß, gibt es auch eine Linux-Version von FEMM, jedoch ohne die Python Bibliothek pyfemm:
https://sourceforge.net/projects/xfemm/

Weiterhin ist es wohl möglich, FEMM unter Wine auszuführen:
https://www.femm.info/wiki/LinuxSupport


@noisefloor:
Ja, du hast Recht.
Wir wollen das zunächst firmenintern versuchen. Zunächst ist ja noch nicht klar, ob und wie es funktionieren könnte. Ich habe da einfach mal etwas gelesen und probiert in der Woche.
Da ich bis jetzt absolut keine Ahnung habe, wie Server so funktionieren, wollte ich es einfach mal mittels pythonanywhere testen. Ziel war es erst einmal, zumindest ein Simulationsmodell auf dem Server erstellen zu können.
Da scheitere ich aber gerade..nun hätte ich ja noch die Möglichkeit, mich mit Servern auseinander zu setzen und einen eigenen Server aufzusetzen, ich hätte auch eine Synology DiskStation hier, mit der ich evtl. auch testen könnte.
Erst wenn ich da Erfolg habe, würde ich unsere IT Abteilung involvieren.

Wenn ihr jedoch Tipps, Infos oder andere Vorschläge habt, bin ich sehr dankbar dafür. Wie gesagt - alles Neuland mit Web-Anwendungen für mich.
__deets__
User
Beiträge: 14544
Registriert: Mittwoch 14. Oktober 2015, 14:29

Das Vorgehen ist nicht sinnvoll in meinen Augen. Wenn du das lokal auf deiner Maschine (Windows, vermute ich mal) laufen lassen kannst, und es tut was es soll, sprich: Zugriff via Browser hat das gewuenschte Resultat, dann ist das dein proof of concept. Nichts daran, das auf einer Synology oder einem VServer oder so laufen zu lassen, beweist etwas, dass deine IT-Abteilung wissen muss. Wenn die ok finden, was du da probierst, kannst du genausogut von denen eine Windows VM bekommen (wenn sie halbwegs normal aufgestellt sind). Und die ganzen Themen zur Netzwerksicherheit und Konfiguration kannst du eh ohne deren Beteiligung nicht loesen.
Patrick1990
User
Beiträge: 116
Registriert: Freitag 3. Juni 2016, 05:45

__deets__ hat geschrieben: Samstag 6. Januar 2024, 10:16 Das Vorgehen ist nicht sinnvoll in meinen Augen. Wenn du das lokal auf deiner Maschine (Windows, vermute ich mal) laufen lassen kannst, und es tut was es soll, sprich: Zugriff via Browser hat das gewuenschte Resultat, dann ist das dein proof of concept. Nichts daran, das auf einer Synology oder einem VServer oder so laufen zu lassen, beweist etwas, dass deine IT-Abteilung wissen muss. Wenn die ok finden, was du da probierst, kannst du genausogut von denen eine Windows VM bekommen (wenn sie halbwegs normal aufgestellt sind). Und die ganzen Themen zur Netzwerksicherheit und Konfiguration kannst du eh ohne deren Beteiligung nicht loesen.
Danke, das hilft mir sehr.
Ich habe da noch eine riesige Wissenslücke. Und auf dieser Windows VM würde dann mein Programm laufen und die Oberfläche auf der Webseite könnte von mehreren Rechnern aus erreichen?
Kannst du mir da evtl. Stichworte nennen, wo ich am besten diesbezüglich nachlesen könnte?
__deets__
User
Beiträge: 14544
Registriert: Mittwoch 14. Oktober 2015, 14:29

Eine VM ist nichts anderes als ein Computer, und so, wie alle anderen Computer im Netzwerk aufeinander zugreifen koennen (oder nicht, weil die IT das nicht will), kann das dann auch auf die VM erfolgen. Ein Server ist nichts magisches, es ist nur ein Computer, dem jemand die Aufgabe gegeben hat, einen Dienst via Netzwerk anzubieten.

Ich habe keine weiteren Stichworte, das ist alles Wissen aus den letzten Jahrzehnten. Das musste ich nicht kuerzlich kompakt wiederholen. Curse of knowledge :D
Patrick1990
User
Beiträge: 116
Registriert: Freitag 3. Juni 2016, 05:45

Danke dir!
Melde mich wenn ich weitere Fragen dazu habe :)
nezzcarth
User
Beiträge: 1636
Registriert: Samstag 16. April 2011, 12:47

__deets__ hat geschrieben: Samstag 6. Januar 2024, 10:16 Wenn die ok finden, was du da probierst, kannst du genausogut von denen eine Windows VM bekommen (wenn sie halbwegs normal aufgestellt sind). Und die ganzen Themen zur Netzwerksicherheit und Konfiguration kannst du eh ohne deren Beteiligung nicht loesen.
Also eine Python-Webanwendung unter einem Windows-Server zu betreiben, halte ich für eher ungewöhnlich. Die IT-Abteilung, die das mitmacht, muss man vmtl. auch erst einmal finden. Aber ich kann mich natürlich täuschen.

Ich würde mir noch mal das angesprochene xfemm genauer ansehen. Das scheint ja ein Fork zu sein, der die Funktionalität von Femm als Kommandozeilen-Tool bereitstellt bzw. für das Ansteuern aus GNU Octave heraus gedacht ist. Das sollte dann auch nicht so schwierig sein, das von Python aus anzusteuern, entweder über Subprocess oder ctypes/cffi selbst wenn es dafür keine dezidierte Bibliothek geht.
__deets__
User
Beiträge: 14544
Registriert: Mittwoch 14. Oktober 2015, 14:29

@nezzcarth: die Firmen, in denen ich gearbeitet habe und tue, lassen zB Active Directory laufen, früher Exchange, und eine ganze Reihe von Anwendungen sind auch nur für Windows erhältlich. Ich meine mich zu erinnern zb FogBugz, aber das mag auch falsch sein. Dann noch MSVC build nodes in Jenkins. Da war also windows genauso wie Linux im VMware ein Häckchen an der richtigen Stelle.

Die Frage ist, wo man für eine interne Anwendung die Energie aufwenden will. Es gibt da für mich keinen inhärenten Grund auf Linux zu setzen. TCO wird bei einem so speziellen system kaum unterscheidbar sein, der TE scheint in solchen Dingen unerfahren und daher auch tendenziell eher weniger leicht so ein setup aufsetzen zu können. Ich würde das zumindest nicht in vorauseilendem Gehorsam machen, wenn es der IT ggf. egal ist.
Benutzeravatar
grubenfox
User
Beiträge: 432
Registriert: Freitag 2. Dezember 2022, 15:49

Patrick1990 hat geschrieben: Samstag 6. Januar 2024, 09:26 Danke für eure Nachrichten.
Soweit ich weiß, gibt es auch eine Linux-Version von FEMM, jedoch ohne die Python Bibliothek pyfemm:
https://sourceforge.net/projects/xfemm/
Wenn wir schon bei Alternativen sind..

Bei der Suche nach Aufklärung worum es hier bzw. nebenan bei der Frage mit dem "CoInitialize Error" überhaupt geht und nach Alternativen unter Linux (um sich das ganze Win32Com-Gewürge zu ersparen) bin ich über http://www.agros2d.org/ und https://freefem.org/ gestolpert...

Beim ersten steht explizit
Support for scripting in Python
oder in der Doku gleich vorne:
AgrosSuite uses Python as the scripting language. Due to the strong support of this language in science, you can use a lot of libraries for your computations.
In wie weit das nun sinnvolle Alternativen zum FEMM unter Windows sind, muss jemand überprüfen der sich damit auskennt...
Patrick1990
User
Beiträge: 116
Registriert: Freitag 3. Juni 2016, 05:45

Danke, das schaue ich mir mal an. Habe ich so in unserem Umfeld noch nie von gehört...aber sehr interessant.
nezzcarth
User
Beiträge: 1636
Registriert: Samstag 16. April 2011, 12:47

__deets__ hat geschrieben: Samstag 6. Januar 2024, 12:20 @nezzcarth: die Firmen, in denen ich gearbeitet habe und tue, lassen zB Active Directory laufen, früher Exchange, und eine ganze Reihe von Anwendungen sind auch nur für Windows erhältlich. Ich meine mich zu erinnern zb FogBugz, aber das mag auch falsch sein. Dann noch MSVC build nodes in Jenkins. Da war also windows genauso wie Linux im VMware ein Häckchen an der richtigen Stelle.
So kenne ich es grundsätzlich auch, ggf. mit der Einschränkung, dass diese Infrastruktur für Arbeitsplatzrechner gedacht ist und man für das Deployment von Webanwendungen etwas anderes verwendet. Worauf ich jedenfalls eigentlich hinaus wollte ist, dass es m.W.n. eher unüblich ist, Python Webanwendungen auf einem Windows-Server zu deployen. Da dürfe man dann, was Tutorials usw. angeht auch relativ auf sich gestellt sein (ein bisschen was gibt es aber schon). Und man befindet sich in einer Zwischenwelt, weil man entweder gucken muss, wie man das mit den Windows-Standard-Webserver IIS zu laufen bekommt oder man muss sich damit befassen, wie man eine Unix-artige Deploymentumgebung unter Windows einrichtet, was zwar geht, aber sicher auch nicht so üblich ist und irgendwie an dem Grund vorbei geht, warum man Windows als Webserver einsetzt (Wenn man natürlich nur Windowsserver hat im Unternehmen ist das ggf. etwas anders). Windows macht denke ich als Webserver vor allem dann Sinn, wenn man Microsoft-Technologien verwenden möchte (IIS, ASP, MSSQL, …) bzw. Produkte hat/einsetzt, die das tun. Und das dürfte dann auch das sein, womit Windows-Admins sich auskennen. Wenn man da jetzt eine halb zweckentfremdete VM hat, die jemand, die/der sich selbst noch nicht so gut auskennt in Eigenregie betreuen muss, dürfte das die wenigsten Admins glücklich stimmen. Ich kann aber natürlich auch komplett falsch liegen. :)
Antworten