Python: Hallo Welt - braucht Hilfe

Probleme bei der Installation?
Peter-
User
Beiträge: 40
Registriert: Dienstag 16. März 2021, 15:01

---
Zuletzt geändert von Peter- am Samstag 20. März 2021, 19:56, insgesamt 1-mal geändert.
Peter-
User
Beiträge: 40
Registriert: Dienstag 16. März 2021, 15:01

Peter- hat geschrieben: Samstag 20. März 2021, 19:37
__blackjack__ hat geschrieben: Samstag 20. März 2021, 17:59 @Peter-: Gegenfrage: Wofür brauchst Du zum Python-lernen einen Webhoster?
Sirius3 hat geschrieben: Samstag 20. März 2021, 18:03 Billig-Webspace ist halt auch nicht für ein "budgetiertes Projekt" geeignet. Wenn Du Python lernen willst, reicht es ja, wenn Du alles Lokal ans Laufen bringst.
@__blackjack__: brauche momentan einfach nur ne simple web-entwicklungsumgebung für python. habe daher beide wege gestartet, lokalhost und provider. Über provider, ionos, ging schneller. Daher hab ich dort schon einen mini-rechner in python "veröffentlicht". Allerdings wurde mir im forum gesagt, dass das python 2.7 von ionos nicht geeignet ist das zu lernen. daher hab ich nun einen account bei uberspace gemacht. Aber ich bin - nach erstem kontakt mit uberspace - nicht sicher ob die zu mir passen. klar muss das jetzt nicht für grosse projekte gut sein. aber so eine entscheidung ist manchmal weitreichend. wenn plötzlich ein mittleres oder größeres projekt ansteht, benutzt man halt gerne bestehende infrastruktur/kontakte und fängt dann nicht plötzlich an neue wege zu gehen, wenns nicht sein muss. never change a running system.

>Uberspace is a hosting platform targeted at people who want to look behind the scenes

ich programmiere eher aus spass. setze gerne auch alle paar jahre mal große projekte selbst um, in meiner eigenen zeit. was ich wirklich können muss, ist es, als kaufmann mit programmierern meines teams (oder betriebswirten, oder anwälten) auf augenhöre sprechen zu können. und ich möchte technologisch am puls der zeit bleiben. aber alles mit augenmaß. ich muss kein unix system konfigurieren können und mir reicht prinzipiell eine sprache soweit gut zu nutzen, und bisher auch nicht unbedingt frameworks (was sich mit django ändern könnte). das überlasse ich anderen. darum weiß ich nicht ob "look behind the scenes "noch in mein "an neuen technologien dran bleiben" reinfällt oder schon ins "überlasse ich anderen".

>Falls das nicht Deinen Vorstellungen entspricht, müsstest Du Dir einen anderen Hoster suchen.

das befürchte ich auch... darum hab ich den gedanken mit hetzner und hosteurope nochmal aufgegriffen.

Nachtrag: das erinnert mich ein bisschen an meinen ersten VHS-Rekorder den ich in den 80ern gekauft hatte. Da hat mich mal jemand gefragt warum ich den kaufe, wo ich doch gar keine VHS-Kassetten habe... heute ist die frage, was ich mit einem python-provider mache, wo ich doch noch nicht auf python umgelernt habe ^^
Benutzeravatar
__blackjack__
User
Beiträge: 13003
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

@Peter-: Also willst Du nicht (nur) Python lernen, sondern Webentwicklung in Python. Aber auch dafür brauchst Du erst einmal keinen Hoster, denn das lässt sich auch lokal machen. Dazu brauchst Du für den Anfang nicht einmal einen Webserver, weil die meisten Rahmenwerke einen kleinen eigenen Entwicklungsserver mitbringen.

Sogar die Python-Standardbibliothek bringt bereits einen simplen Webserver mit, der auch CGI kann. Unterverzeichnis mit dem Namen ``cgi-bin`` anlegen, da Deine Hallo-Welt-CGI-Datei rein, und dann das `http.server`-Modul aus der Standardbibliothek starten:

Code: Alles auswählen

bj@s8n:~$ ls -l cgi-bin/
total 4
-rwxrwxr-x 1 bj bj 99 Mär 20 20:37 hallowelt.py
bj@s8n:~$ cat cgi-bin/hallowelt.py 
#!/usr/bin/env python3

print("Content-Type: text/html")
print("\n\n")
print("<p>Hello World</p>")
bj@s8n:~$ python3 -m http.server --cgi 8000
Serving HTTP on 0.0.0.0 port 8000 (http://0.0.0.0:8000/) ...
Im Browser http://0.0.0.0:8000/cgi-bin/hallowelt.py eingeben, und viola, wird "Hello World" erscheinen.

Eventuell musst Du "python3" in etwas anderes ändern, je nach dem wie Du Deinen Python-Interpreter startest. Das `http.server`-Modul (ohne ``--cgi``) ist auch ein netter weg um mal schnell und unkompliziert Dateien in einem Verzeichnis auf einem Rechner im lokalen Netz verfügbar zu machen.

Es wurde ja schon mehrfach gesagt: Man möchte kein CGI programmieren. Man braucht ein Rahmenwerk. Ohne würde man sich am Ende nur selber eines schreiben, aber sehr wahrscheinlich schlechter als die, die es bereits gibt. Verbreitete Rahmenwerke nach Grösse, von Mikrorahmenwerk in einer einzigen Datei bis eierlegende Wollmilchsau, wären beispielsweise Bottle, Flask, und Django. Alle kommen mit eigenem Entwicklungsserver und sprechen nach aussen WSGI.

In Bottle sähe ein kleines Hallo Welt so aus:

Code: Alles auswählen

#!/usr/bin/env python3
from bottle import route, run


@route("/")
def index():
    return "<p>Hello World</p>"


if __name__ == "__main__":
    run(host="localhost", port=8080)
Einfach als Programm starten und da braucht man dann nur http://localhost:8080/ im Browser aufrufen, ohne irgendwelche Zusätze in der URL.

Worüber Du Dir aber vielleicht vorher schon im klaren sein solltest, ist das es für Python genau wie beispielsweise für Java keine vergleichbaren Billighoster wie für PHP gibt und das die Technik das ans Netz zu bringen deutlich komplexer ist als beispielsweise PHP. Ein üblicher Ansatz ist eine Webanwendung die über WSGI kommuniziert mit einem Anwendungsserver laufen zu lassen, und der wird dann hinter einen als „reverse proxy“ konfigurierten Webserver gesetzt der sich um SSL kümmert und statische Inhalte direkt ausliefert und für die dynamischen Inhalte den Anwendungsserver befragt.
“Most people find the concept of programming obvious, but the doing impossible.” — Alan J. Perlis
DasIch
User
Beiträge: 2718
Registriert: Montag 19. Mai 2008, 04:21
Wohnort: Berlin

Peter- hat geschrieben: Samstag 20. März 2021, 14:12 Das ist schon ärgerlich, wenn man doch mal ein richtiges budgetiertes Projekt über die laufen lässt, ist das echt kein Zustand.
Managed web hosting wie uberspace und andere Angebote ist ja auch eher für Hobbykram ausgelegt. Wenn man Geld in die Hand nimmt und es einfach haben möchte geht man inzwischen zu Squarespace, Shopify usw. wenn einem die Facebook Seite nicht reicht.

Wenn man das Budget hat für Anwendungsentwicklung geht man entweder zu einer Agentur die dass inklusive Hosting übernimmt oder wenn man das in-house macht geht man zu einem PaaS (Heroku, DigitalOcean...) oder gleich zu AWS, GCP oder Azure.

PHP dominiert im unteren Budget Bereich nahezu vollständig. Wenn du andere Programmiersprachen wie Python nutzt bist du damit quasi sofort in dem Bereich, in dem Leute entweder wissen was sie tun und im Hobby Bereich vserver, uberspace o.ä. nutzen oder im professionellen Bereich in der höheren Preisklasse.

Ich wäre auch Vorsichtig zu viel auf Support in dem managed hosting Bereich zu achten. Leute die qualifiziert sind wirklich guten Support zu bieten wollen gut bezahlt werden, dementsprechend ist auch guter Support nicht günstig. Wenn du nur ein paar Euro im Monat zahlst, bekommst du einfach keinen guten Support, bei keinem Anbieter. Selbst AWS, was jetzt wirklich nicht günstig ist, bietet guten Support auch nur an wenn du dafür zahlst und dass fängt bei $29 an.
Peter-
User
Beiträge: 40
Registriert: Dienstag 16. März 2021, 15:01

>Also willst Du nicht (nur) Python lernen, sondern Webentwicklung in Python. Aber auch dafür brauchst Du erst einmal keinen Hoster, denn das lässt sich auch lokal machen.

Da es online auch nicht viel komplizierter ist als offline, und ich es ja schon auch fließend in Korrelation mit steigenden Kenntnissen für öffentliche Projekte nutzen werde, bleibe ich mal bei der Provider-Variante.

Versuche jetzt meinen uberspace Zugang von der voreingestellten Python Version 2 auf die hinterlegte 3.6 umzustellen.
Habe dazu PuTTY installiert. Kann damit auf 3.6 umstellen: alias python='/usr/bin/python3'
aber damit klappt es nur temporär, nicht systemweit und nicht für Webseitenaufrufe. (momentan wird meine test.py nur so angezeigt wie sie geschrieben ist und nicht interpretiert)
womöglich geht das mit: update-alternatives --install /usr/bin/python python /usr/bin/python3 1
dazu benötige ich aber erst Rechte: sudo su
Servermeldung: Sorry, user is not allowed to execute '/bin/su' as root on *.uberspace.de

Uberspace bescheid geben dass sie Rechte freischalten? Oder anderen Weg möglich?

Wäre doch gelacht wenn Hello World mit Python 3 nicht noch klappen würde.
Sirius3
User
Beiträge: 17710
Registriert: Sonntag 21. Oktober 2012, 17:20

Python3-Programme startet man immer mit python3. Einen Alias oder sonst irgendetwas braucht man da nicht.
Die richtige Shebang-Zeile ist also

Code: Alles auswählen

#!/usr/bin/env python3
Benutzeravatar
kbr
User
Beiträge: 1487
Registriert: Mittwoch 15. Oktober 2008, 09:27

Der sinnvollste Weg, sich dem Thema anzunähern, besteht meiner Ansicht nach (und wurde hier auch schon vorgeschlagen) darin, lokal ein Webframework zu installieren und den zugehörigen Entwicklungsserver zu verwenden. Alle Frameworks, seien es django, Pyramid, Flask, bottle oder z.B. CherryPy, bringen einen solchen bereits mit. Wenn das klappt, kannst Du lokal apache oder nginx aufsetzen und schauen, wie Du die Verbindung zu diesen Proxys erstellen kannst. Wenn auch das klappt, bist Du bereit für das Einrichten eines eigenen (V)Servers. Mit der Konfiguration von apache oder nginx sollte man dann gleichfalls vertraut sein, damit man nicht versehentlich Sicherheitslücken öffnet. Daher gilt es auch als nächstes, sich mit SSL zu befassen und ggf. eigenen DNS-Konfigurationen.

Die Einschätzung, das es "online auch nicht viel komplizierter ist als offline" ist nicht zutreffend.

Online befindest Du Dich in freier Wildbahn und Server und Anwendung werden bei erster Gelegenheit kompromittiert.
Peter-
User
Beiträge: 40
Registriert: Dienstag 16. März 2021, 15:01

Meine Anforderung, eine Web-Umgebung für Python Programme zu schaffen, hat jetzt geklappt.
Ich möchte die Lösung hier zusammenfassen, für den Fall dass andere dieselbe Anforderung haben:

Der erste Punkt war, wie @nezzcarth gelöst hat, dass das Zeilenende der Datei .py im Editor für UNIX (LF) konvertiert werden musste.

Dann wurde ich darauf aufmerksam gemacht, dass die Python 2 Version EOL ist, und ich die Version 3 brauche.
Ich hatte dann drei Hoster in etwa zweitgleich gebucht, mit dem Ziel, dass es wenigstens einer davon zeitnah schafft von Version 2 auf 3 zu switchen.
Hier meine Erfahrungen dazu:

1. Ionos:
Der Supporter hatte sich im Telefonat kurz rück-informiert, unabhängig von mir sogar dieses Thread in diesem Forum gefunden, und dann die Lösung präsentiert:
Einfach den Versionspfad mit 3 angeben: #!/usr/bin/python3
Ich hatte das vorher zwar schon versucht, aber es hatte wegen der fehlenden print-klammer nicht geklappt, was ja eher ein positives Zeichen war, wenn man die richtigen Rückschlüsse zieht.
Damit ist bei Ionos die Nutzung von python 3 nun möglich und ich kann bereits online entwickeln.
Ionos hat meine Erwartungen damit erfüllt.

2. Hetzner:
Der Supporter hatte mir eine Mail geschickt, dass meine Testdatei - von ihm entsprechend angepasst - jetzt funktioniert. Ich hatte ihm dann gemailt, dass es sich noch um die Version 2 handelt, zu erkennen an der Funktion trotz fehlender Klammer beim Print-Befehl. Ich hatte ihn auf die Lösung mit dem Versionspfad (siehe Ionos) hingewiesen. Er hat den richtigen Pfad noch geschickt, inklusive dem Befehl für den Browser, die Python Version auszugeben.
Hetzner also ebenfalls jetzt bereits möglich online zu entwickeln und Erfüllung meiner Erwartungen.

3. uberspace:
Der Supporter schrieb per E-Mail, dass ich erst einen extra Server einrichten soll. Außerdem gab er mir einen Link auf eine Anleitung für das Framework Flask, wo steht wie das geht.
Also ich denke man kann das als ausreichend Service bewerten, ich tue das nicht. Ich wurde noch nie aufgefordert einen eigenen Server einzurichten, das ist für mich die Dienstleistung des Providers. Da kann ich gleich einen eigenen Server aufsetzen und ein Hosting Projekt gründen.
Mir gefällt die persönliche Art von uberspace, und die Flexibilität mag groß sein. Aber wie schon zuvor in diesem Thread vermutet...
>Falls das nicht Deinen Vorstellungen entspricht, müsstest Du Dir einen anderen Hoster suchen.
... ist das nicht das was ich mir vorstelle. Ich denke, für Menschen die Spaß haben sich da "reinzufuchsen" werde ich uberspace mit gutem Gewissen empfehlen.

Fazit:
Ionos und Hetzner: toller Service, tolles Angebot und in etwa gleich auf.
Ich werde vorerst bei beiden bleiben.
uberspace gut, aber ich bin wahrscheinlich nicht in der Zielgruppe.

An alle in diesem Thread, die zur Lösung meiner Anforderung beigetragen haben, nochmal vielen Dank.
Benutzeravatar
__blackjack__
User
Beiträge: 13003
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

@Peter-: Mit anderen Worten hast Du noch keinen Hoster gefunden bei dem Du weisst, dass er geeignet wäre. Denn das bei Ionos und Hetzner jetzt ein *CGI*-Skript läuft, heisst ja noch nicht, das man da Webanwendungen in Python laufen lassen kann. Man programmiert keine Webanwendungen gegen die CGI-Schnittstelle. Und wie schon gesagt stand mindestens mal bei Hetzner das kein WSGI bei den Webhosting-Angeboten dabei ist. Und ich vermute stark, dass das bei Ionos nicht viel anders aussehen wird.

Man entwickelt Webanwendungen nicht online. Denn beim Entwickeln möchte man mindestens Tracebacks direkt im Browser sehen, wenn nicht gar so etwas wie den Werkzeug-Debugger laufen lassen um dann auch gleich im Browser im Traceback ”live” in den Code schauen und damit interaktiv herum probieren können um Fehler zu finden. Das wiederum will man aber ganz sicher nicht öffentlich im Internet stehen haben.

Wenn Du ein „Hello World“ schreiben willst um den Hoster zu testen, dann ist das in Bottle, Flask, oder Django — nicht als CGI-Skript.
“Most people find the concept of programming obvious, but the doing impossible.” — Alan J. Perlis
nezzcarth
User
Beiträge: 1632
Registriert: Samstag 16. April 2011, 12:47

Danke für den ausführlichen Bericht. Wenn du einen Anbieter gefunden hast, der deinen Vorstellungen entspricht ist das doch gut.
Der Supporter schrieb per E-Mail, dass ich erst einen extra Server einrichten soll. Außerdem gab er mir einen Link auf eine Anleitung für das Framework Flask, wo steht wie das geht.
Also ich denke man kann das als ausreichend Service bewerten, ich tue das nicht. Ich wurde noch nie aufgefordert einen eigenen Server einzurichten, das ist für mich die Dienstleistung des Providers. Da kann ich gleich einen eigenen Server aufsetzen und ein Hosting Projekt gründen.
Ich kann deine Reaktion im ersten Moment verstehen. Ehrlich gesagt spricht diese Antwort aber sogar für Uberspace. Denn der Support-Mensch kennt sich scheinbar zumindest soweit mit Python aus, dass er dir genau den Weg beschrieben hat, der zur Zeit auch von den meisten Python-Webentwicklern empfohlen wird. Der "Goldstandard" ist tatsächlich, die Anwendung mit einem WSGI-Server wie Gunicorn oder uWSGI zu betreiben (wie hier im Thread ja vorher schon beschrieben). Das ist etwas komplexer als bei z. B. PHP, aber auch nicht so Komplex, wie das Wort "Server" vielleicht suggeriert. Vielleicht stellst du dir unter Server etwas anderes darunter vor, als hier gemeint ist. Die Art von Server, um die es geht, kann Uberspace auch nicht wirklich für dich einrichten, das musst der/die jeweilige Entwickler/in selbst machen. Ich weiß, dass viele Einsteiger hier im Forum dazu neigen, auf CGI zu beharren, weil das zunächst wie der leichteste Weg aussieht. Das ist aber nicht wirklich der Fall. Python + CGI ist heutzutage aus meiner Sicht eher die exotische Sonderlösung für Fälle, in denen es wirklich gar nicht anders geht.
Zuletzt geändert von nezzcarth am Dienstag 23. März 2021, 19:04, insgesamt 1-mal geändert.
Peter-
User
Beiträge: 40
Registriert: Dienstag 16. März 2021, 15:01

__blackjack__ hat geschrieben: Dienstag 23. März 2021, 18:17 @Peter-: Mit anderen Worten hast Du noch keinen Hoster gefunden bei dem Du weisst, dass er geeignet wäre.
@__blackjack__: doch, das habe ich, siehe oben.

__blackjack__ hat geschrieben: Dienstag 23. März 2021, 18:17 heisst ja noch nicht, das man da Webanwendungen in Python laufen lassen kann
python 3 code läuft nachweislich auf dem server. genau das war meine Anforderung. womöglich war Deine Anforderung eine andere ;-)

hm... ab hier alles off topic.
Zuletzt geändert von Peter- am Dienstag 23. März 2021, 19:19, insgesamt 1-mal geändert.
Peter-
User
Beiträge: 40
Registriert: Dienstag 16. März 2021, 15:01

Hallo @nezzcarth

>Danke für den ausführlichen Bericht. Wenn du einen Anbieter gefunden hast, der deinen Vorstellungen entspricht ist das doch gut.

absolut. danke nochmal für Deine Unterstützung.

>genau den Weg beschrieben hat, der zur Zeit auch von den meisten Python-Webentwicklern empfohlen wird

ich konnte jetzt auf jeden fall bereits anfangen mit einem kleinen projekt das später tatsächlich genlauncht werden wird.
womöglich sehe ich das in einiger Zeit anders, aber für den Moment ist es genau das was ich gesucht habe.

schöne Grüße
Antworten