Letzter Versuch: Python statt PHP?

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.
oops
User
Beiträge: 80
Registriert: Samstag 9. September 2017, 15:29

Ist mir peinlich, bin aber neugierig, weil Python angeblich sehr verbreitet ist:
http://cssdynamics.bplaced.net/python/
Rät man mir ab, vergesse ichs. Der code ist so seltsam, dass man es aber doch mal versuchen will.
Andererseits gibts wohl kaum mit Python hergestellte Webseiten?
__deets__
User
Beiträge: 14529
Registriert: Mittwoch 14. Oktober 2015, 14:29

Ich verstehe nicht, was du uns sagen willst. Ich sehe auch keinen Code. Oder soll der geneigte Leser sich den Code der Webseite anschauen?

Auf der anderen Seite macht die Geschichte deiner Posts klar, das es hier eh nicht um einen Dialog geht. Darum bar jeden Verständnisses: ich rate dir ab!
oops
User
Beiträge: 80
Registriert: Samstag 9. September 2017, 15:29

Der php code ist nur bei mir intern, den ich dann mit Python umsetzen will. Damit würde ich es lernen, wenn es Spaß macht.
Hier interessiert mich, wie ich Python endlich so einfach wie php in Apache einfügen kann.
Das python-zip sollte eigentlich reichen, oder?
Wer es verwendet, sollte alles über seine Einbindung wissen.
__deets__
User
Beiträge: 14529
Registriert: Mittwoch 14. Oktober 2015, 14:29

und immer noch der gleich wirre Stream of Conciousness wie zuvor. Dir fehlt es offensichtlich an der Fähigkeit, deine Gedanken und fragen so klar zu strukturieren, dass andere verstehen können, worauf du hinauswillst.
oops
User
Beiträge: 80
Registriert: Samstag 9. September 2017, 15:29

Pardon, wenn das so wirkt.
Wie kann man bitte dieses python-3.7.2.post1-embed-amd64.zip in Apache24 integrieren?
Wenn das läuft, kann ich endlich mal in Python codieren, worauf ich neugierig bin.
__deets__
User
Beiträge: 14529
Registriert: Mittwoch 14. Oktober 2015, 14:29

Bist du unter Windows unterwegs?

Wie dem auch sei: vergiss dieses Ding. Benutz ein normales installiertes Python. Und dann mod_wsgi installiert per pip, wie hier beschrieben: https://pypi.org/project/mod_wsgi/
Benutzeravatar
__blackjack__
User
Beiträge: 13077
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

@__deets__: Also nach dem ich herausgefunden hatte, dass man links, fast nicht mehr innerhalb des Browserfensters eine Art Button finden kann, habe ich auch etwas Code auf der Seite gefunden. Allerdings ein PHP-Code-Schnippsel, auf das ich wegen der ”genialen” Idee alles in eine Webseite zu packen und nur per Maus-drüber-schweben einzublenden, nicht verlinken kann. Zitat:
[…] wäre interessant, wie sowas in python aussieht:

Code: Alles auswählen

function to_txtfiles()  //Backtick-Operator  ` `, assoziative Arrays
{ $i=-1;
  foreach (func_get_args () as $arr) { ++$i; if(count($arr) != 2) { echo "to_txtfiles hat bei Argument ".$i." kein Doppelarray"; exit; }
    if(!realpath($arr[0])) { echo "to_txtfiles() !realpath(".$arr[0].") fehlt was in path: i: ".$i; exit; }
    `dir   /S /A:-S /A:-D /T:W /O:-S  /-C "$arr[0]" > "$arr[1]" `;  } 
}
Spontane Antwort: Lesbar und verständlich würde das in Python aussehen. Und portabel, weil man nicht auf ein externes ``dir`` zurückgreifen würde was es nicht auf jedem System gibt, und schon gar nicht mit solchen Optionen. Und es wird auch mit Anführungszeichen in Datei oder Ordnernamen funktionieren. Wie auch mit allem anderen was in Datei und Pfadnamen erlaubt ist. Wird natürlich ein paar Zeilen länger wenn man den Effekt des ``dir``-Aufrufs in Python programmiert. Aber dafür ist es dann auch nicht kaputt.

Ich frage mich übrigens was das „assoziative Arrays“ im Kommentar mir sagen soll, denn im Code darunter sehe ich nur Code der Arrays ganz normal mit numerischen Indexzugriffen verwendet, also das was man landläufig nur als Array bezeichnet. Beim ``$arr`` habe ich irgendwie immer das Bild von einem Programmierer mit Augenklappe und Papagei auf der Schulter im Kopf. :mrgreen:

Noch ein Zitat von der Webseite:
Die Verbreitung von Python macht einen aber neugierig. Andererseits macht mich der code dort schwummrig, wie nicht von dieser Welt: TU Chemnitz Python
Also wenn einen der Code auf der Seite dich schwummrig macht, und ausgehend davon das Du PHP magst und wie Deine Prosatexte aussehen, lass das mit Python besser bleiben. Du könntest Dich mit Perl vielleicht anfreunden. Damit kann man noch schlimmeren Quelltext als mit PHP schreiben. :twisted:

(Zur Ehrenrettung von Perl-Programmierern: „Ich kann das noch kürzer und noch kryptischer in eine Zeile quetschen“ was in den 90ern zumindest teilweise als gutes Perl angesehen wurde, macht heute kein guter Perl-Programmierer mehr ausserhalb von „code golf“.)

Insbesondere wenn man schon programmieren kann würde ich nicht mit irgendeinem Tutorial aus dem Netz mit Python anfangen, sondern mit dem Tutorial in der Python-Dokumentation. Die Qualität von den anderen da draussen ist so unterschiedlich, das man wenigstens mit dem Original starten sollte, um nicht gleich am Anfang zu komisches/falsches/”unpythonisches” zu lernen.
„All religions are the same: religion is basically guilt, with different holidays.” — Cathy Ladman
Benutzeravatar
sparrow
User
Beiträge: 4187
Registriert: Freitag 17. April 2009, 10:28

Zumindest hat man die Idee ja nicht das erste Mal.
Benutzeravatar
__blackjack__
User
Beiträge: 13077
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

Grundsätzlich könnte eine möglichst originaltreue Übersetzung des PHP-Codes, mit all den Problemen/Fehlern, in Python so aussehen:

Code: Alles auswählen

def to_text_files(*arguments):
    for path, filename in arguments:
        subprocess.run(
            f'dir /S /A:-S /A:-D /T:W /O:-S /-C "{path}" > "{filename}"',
            shell=True,
        )
Hier würde ich als erstes die ”Magie” loswerden, dass man beliebig viele Argumente übergeben kann, denn das wird häufig wenn nicht fast immer zu der gleichen ”Magie” beim Aufrufen der Funktion führen. Man kann doch einfach eine Liste mit den (Pfad, Zieldatei)-Paaren übergeben.

Als nächstes würde ich die unnötige externe Shell für jedes Argumentpaar eliminieren:

Code: Alles auswählen

def to_text_files(items):
    for path, filename in items:
        with open(filename, 'wb') as out_file:
            subprocess.run(
                ['dir', '/S', '/A:-S', '/A:-D', '/T:W', '/O:-S', '/-C', path],
                stdout=out_file,
            )
Nun dürfen die Pfade/Dateinamen auch alles enthalten was gültig ist, weil man keine Probleme mehr mit einer zwischengeschalteten Shell bekommt, vor der man irgendwelche Zeichen schützen müsste.

Der nächste sinnvolle Schritt wäre es den externen Aufruf von ``dir`` durch eine Python-Implementierung zu ersetzen, damit man nicht auf Windows festgenagelt ist.
„All religions are the same: religion is basically guilt, with different holidays.” — Cathy Ladman
oops
User
Beiträge: 80
Registriert: Samstag 9. September 2017, 15:29

Super, danke für den CODE. Sieht spannend aus. Wird klar, Python muss man sich unbedingt aneignen.
Dazu gibts dann sicher auch ein Doppelarray. Ja, ein assoziatives Array kommt in dem winzigen Bruchstück nicht vor.
Das ist unter 1 % des codes, habs mal neugierig gezeigt, um für Python angespornt zu werden.
Treibe mich mit Win10 Home 64bit herum und habe mir daher php erschlossen, das mir auch dazu half,
endlich die Astra Channels von der Schüssel außen durchflutschen und im browser umschalten zu können.
Dazu gibts im web nur sperrige links, zudem natürlich ohne Zugriff auf meinen USB Sat receiver.
Der Grund für Windows ist einfach: nirgendwo sonst gibts soviel hervorragende freeware.

Python steigt im ranking, ich erkenne immer mehr, wieso.
Meine angegebenen Webseiten sind eigentlich nur für mich daheim gedacht: schlank und rank ohne framework, jeweils nur ein mickriges html.
Wenn endlich python-3.7.2.post1-embed-amd64.zip in Apache24 integriert ist, gehts spannend los.
Es ist noch winziger, als das php-zip, sagenhaft.
Zudem ahne ich, man kann sich Zusätze einbinden, um immer komplexer zu programmieren?
Die Frage nach dieser Integration in Apache portable könnte vielleicht beantwortet werden.
Läuft der erste Code, juble ich über dieses Forum hier, lach. Das wird der mir hier vorgelegte.
Dann kann man gucken, was damit sonst noch so geht, wofür man es noch völlig unerkannt nutzen kann.
__deets__
User
Beiträge: 14529
Registriert: Mittwoch 14. Oktober 2015, 14:29

Ich habe dir deine Frage nach dem Zip und Apache schon beantwortet. So. Macht. Man. Das. Nicht. Vergiss. Dein. ZIP. Benutz. Den. Normalen. Python. Installer. Installiere mod_wsgi. Wie. Beschrieben. In. Dem. LInk.

Wenn dir daran etwas nicht klar ist, stell eine konkrete Frage. Was hast du probiert? Was geht nicht? Welche Fehlermeldungen kommen.
oops
User
Beiträge: 80
Registriert: Samstag 9. September 2017, 15:29

@_deets_, https://pypi.org/project/mod_wsgi/ ist ein kompliziert langer Text, keine Ahnung.
Geht das nicht so einfach wie mit php? Wozu dann das winzige zip?
Vom Desktop habe ich "Apache24" /low "X:\....\Apache24\bin\httpd.exe" (cmd Fenster) als Verknüpfung in die taskleiste verankert (rote Apache-Feder).
Nach wie vor soll php funktionieren. Vielleicht kann man beides gleichzeitig starten, oder dann halt zwei tasks.
Mit Notepad++ ist auch Python kein Problem.
Dieses kleine zip sagt mir, es geht sehr einfach mit nur ein paar zusätzlichen Zeilen in httpd.conf und vielleicht im python Ordner dort neben dem php Ordner.
Benutzeravatar
noisefloor
User
Beiträge: 3856
Registriert: Mittwoch 17. Oktober 2007, 21:40
Wohnort: WW
Kontaktdaten:

Hallo,

ich weiß nicht, was in der PHP Welt so Standard ist und was nicht, aber bei Python macht man das so nicht und eigentlich will das so auch keiner machen.
Wenn du auf deinem "ich will das wie bei PHP machen" Standpunkt bleibst -> dann nimm' PHP und vergieß Python.

Der Standard für Webapplikation bei Python ist WSGI. Heißt, du programmierst deine Applikaktion so, dass sie einen Einstiegspunkt für WSGI hat und lässt die Applikation von einem Applikationsserver wie gunicorn (und meinetwegen auch Apache + mod_wsgi - ist IMHO von der Konfiguration aber komplizierter) ausliefern.
Das hört sich kompliziert an - ist es aber nicht. Wer bei halbswegs klarem Verstand ist, nimmt auch ein Python Framework wie Flask, Bottle, Django, ... weil die machen alles viiiiel einfacher und liefern direkt den Einstiegspunkt für WSGI. Und eine Template Engine. Uvm.

Gruß, noisefloor
oops
User
Beiträge: 80
Registriert: Samstag 9. September 2017, 15:29

Na ja, wenn schon, dann geht es um die 'Apache Welt'. Es kann auch Python verwalten, wozu es eben das zip gibt.
Damit macht man das, sonst gäbs das nicht. Wie geht es bitte damit?
Ich glaube, es erfordert nur ein paar zusätzliche Zeilen in httpd.conf und im neben php zugefügten Python Ordner.
Simple portable ohne irgendwelche Frameworks wie bei frameworkfreiem php.
__deets__
User
Beiträge: 14529
Registriert: Mittwoch 14. Oktober 2015, 14:29

Ich habe das schon verstanden. Ich habe dir die Frage auch bezueglich der "Apache-Welt" beantwortet. Wenn du der Meinung bist, dass du mit einem irgendwo aus den Untiefen des Internets gefischten ZIP-File weiter kommst, dann mach's halt wie du es willst. Aber dann kannst du auch nicht erwarten, dass dir jemand helfen kann. Viel Erfolg.
Benutzeravatar
__blackjack__
User
Beiträge: 13077
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

@__deets__: Wenn ich das richtige sehe muss das `mod_wsgi` auch per ``pip`` installiert für den Apache kompiliert werden. Man braucht also einen C-Compiler. Ich glaub nicht dass das was für oops ist. ;-)

@oops: Du hattest hier ja schon einmal ein Thema aufgemacht was weiter oben in diesem Thema auch schon verlinkt wurde, mit grundlegend der gleichen Frage. Python ist nicht PHP. Das ist nicht so ”einfach” das man den Code mitten ins HTML schreibt oder Code schreibt der HTML zum Ausgeben enthält. Die Anführungszeichen bei ”einfach” weil das was Du als einfach ansiehst, die meisten Entwickler als ziemlich kaputt ansehen. Inklusive PHP-Entwickler, denn auch die verwenden Template-Engines und Rahmenwerke um Programmlogik und Präsentation sauber zu trennen und sich das Leben einfacher und ihre Programme damit wartbarer, fehlerfreier, und sicherer zu machen.

Ich kenne nur wenige Entwickler die Webanwendungen mit Windows entwickeln und von denen verwenden fast alle unter Windows dann auch nur das Microsoft-Ökosystem, also .NET-Sprachen, ASP-Seiten & Co. Und das ist dann auch alles eher der Enterprise-Bereich. Unter Linux ist es auch wesentlich einfacher Apache, Python, und `mod_wsgi` zu installieren weil das alles in den Paketquellen zu finden ist und über die gleiche GUI bzw. Paketverwaltung über die Kommandozeile installierbar ist.

Der von Dir angegebene Grund für Windows ist fragwürdig. Bei Linux ist ja im Grunde 99,9% des Systems ”Freeware”, also zumindest kostet es genau so ”viel”.

Falls es Dir nur um eine lokale Webanwendung für den Privatgebrauch geht, braucht man aber auch gar keinen Apache. Da kann man auch den jeweiligen Entwicklungsserver verwenden den die Webrahmenwerke in Python mitbringen. Das kleinste unter den verbreiteten ist Bottle, das ist eine einzelne Python-Datei ohne weitere Abhängigkeiten. Ich persönlich verwende bei Bottle nicht die integrierte Template-Engine, sondern installiere mir dafür noch Jinja2 dazu.

Und zu der Frage wie das mit Deinem ZIP geht: Woher sollen wir das wissen? Es weiss ja ausser Dir niemand wo das überhaupt her ist und was da drin ist.

Wie schon mehrfach gesagt: Ohne Framework geht es in Python nicht, bzw. macht das wirklich *niemand*. Ausser Leute die ganz gewaltig einen an der Waffel haben. Der Standard ist WSGI und selbst das benutzt niemand direkt, weil es Webrahmenwerke in verschiedenen Umfängen gibt, von Bottle bis Django ist da für jeden etwas dabei. Oder eben auch nicht wenn man unbedingt PHP programmieren will. Dann sollte man halt auch PHP verwenden und nicht versuchen eine andere Programmiersprache in dieser Richtung zu missbrauchen.
„All religions are the same: religion is basically guilt, with different holidays.” — Cathy Ladman
oops
User
Beiträge: 80
Registriert: Samstag 9. September 2017, 15:29

Schade, es wäre sicher extrem einfach, wie mit php.
Aber vielleicht kennt sich jemand mit Apache portable in Windows aus.
Dieses kleine zip ist doch kein winziger toter Fisch aus den Untiefen des Webozeans, lach.
Es wird verwendet und zappelt bestimmt auf PCs fröhlich herum.
Klar, wer mit Apache portable nix zu tun hat, dem mag das fremd sein.
Damit würde ich mich gerne mit Python befassen.
Und je einfacher das geht, desto schneller kann es sich damit verbreiten.
Nochmal zu Windows: das ist auf allen StandardPCs der großen Hersteller installiert.
Früher bastelte ich mir PCs zusammen, was inzwischen sinnlos erscheint.
Zuletzt geändert von oops am Donnerstag 17. Januar 2019, 15:52, insgesamt 2-mal geändert.
Benutzeravatar
__blackjack__
User
Beiträge: 13077
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

@noisefloor: Geht gunicorn überhaupt unter Windows? Die Projektbeschreibung lautet ja „Gunicorn ‘Green Unicorn’ is a Python WSGI HTTP Server for UNIX. It’s a pre-fork worker model […]“. Das klingt nicht besonders Windows-kompatibel. :-)

@oops: Dann befass Dich doch mit Apache portable und einem ZIP von dem immer noch keiner weiss woher das überhaupt kommt. Du bist damit halt alleine.
„All religions are the same: religion is basically guilt, with different holidays.” — Cathy Ladman
oops
User
Beiträge: 80
Registriert: Samstag 9. September 2017, 15:29

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

Hatte ich dann auch mittlerweile gefunden. Zur Verwendung gibt's in der Dokumentation das hier: The embeddable package. ``pip`` funktioniert damit nicht ohne Probleme. Damit wäre das für mich als Option ja schon gestorben.

Und das lässt sich auch nicht so einfach in Apache einbinden. Man braucht ja immer noch Code für ein Apache-Modul, also letztlich `mod_wsgi`, also einen C-Compiler um das zu übersetzen.

Vergiss es einfach und bleib bei PHP.
„All religions are the same: religion is basically guilt, with different holidays.” — Cathy Ladman
Gesperrt