Kompletter Neuling - Python 3 + PyPy

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.
Syronn
User
Beiträge: 15
Registriert: Mittwoch 10. August 2016, 13:06

Moin allerseits,

ich komme aus der Systemadministration und bin komplett neu in der Entwicklungsecke.
Aus privaten, sowie beruflichen Gründen möchte ich mich gerne näher mit Python befassen.
Mir wurde geraten mit Python 3, also der neuesten Version zu beginnen.

Ich habe etwas recherchiert und würde gerne PyPy als Interpreter einsetzen, bin mir aber aktuell nicht sicher, welche Version von beidem ich runterladen muss, um ein stabiles und "getestetes" Umfeld zu schaffen.
Auf der Homepage von PyPy wird ja aktuell das Alpha-Release für den Support von Python 3.3.x beworben. Ist aber halt nur eine Alpha.
Kann mir da vielleicht jemand helfen, bzw. einen Tipp geben?

Ich freue mich schon auf die Arbeit mit Python und ebenfalls auf das Ausfragen im Forum! :)

Viele Grüße aus dem Norden,

Syronn
Sirius3
User
Beiträge: 17741
Registriert: Sonntag 21. Oktober 2012, 17:20

@Syronn: warum möchtest Du PyPy nutzen?
Syronn
User
Beiträge: 15
Registriert: Mittwoch 10. August 2016, 13:06

Sirius3 hat geschrieben:@Syronn: warum möchtest Du PyPy nutzen?
Ist nur ein Gedanke, weil Python dadurch wohl einiges an Performance gewinnen soll.
Ist dem nicht so?
BlackJack

@Syronn: Python 2.7 ist auch noch eine aktuelle Python-Version die bis 2020 gepflegt wird. Also wenn es irgendetwas was Du brauchst, (stabil) nur für Python 2.7 gibt (PyPy, Jython, irgendwelche Packages, Standard-Python-Installation auf stabilen Linuxsystemen, …), dann kannst Du auch noch Python 2.7 verwenden.

Speziell zu PyPy: Jain. Es gibt Code der dadurch schneller wird, aber nicht automatisch jeder. Ich sehe aber keinen Grund mit so etwas ”exotischem” anzufangen solange man damit nicht ein ganz konkretes, reales Problem lösen möchte. Man muss dabei auch im Hinterkopf behalten, dass es dafür bei weitem weniger Erweiterungspakete gibt, beziehungsweise das die Installation komplexer werden kann wenn man dafür beispielsweise etwas kompilieren muss. So etwas wie PyQt installiere ich zumindest lieber vorkompiliert, als mich da selbst mit herumschlagen zu müssen. Unter Windows würde ich darüber gar nicht erst nachdenken wollen.
Syronn
User
Beiträge: 15
Registriert: Mittwoch 10. August 2016, 13:06

Also lieberst Python-Basics (Sprache an sich) lernen und später mit sich mit PyPy etc. rumschlagen?
BlackJack

@Syronn: Ich würde sagen ja.
Syronn
User
Beiträge: 15
Registriert: Mittwoch 10. August 2016, 13:06

Hmm, noch jemand eine andere Meinung?

Was für Quellen sind denn empfehlenswert umd saubere Programmierung mit Python zu lernen?
Ich bevorzuge das Web, und nicht Gebundenes :)
BlackJack

@Syronn: In der Python-Dokumentation gibt es ein Tutorial. Und der Style Guide for Python Code ist Pflichtlektüre. :-)
Syronn
User
Beiträge: 15
Registriert: Mittwoch 10. August 2016, 13:06

Danke für die Ratschläge! :)
Jemand noch mehr ? :D
nezzcarth
User
Beiträge: 1633
Registriert: Samstag 16. April 2011, 12:47

Vielleicht noch mal zu PyPy: Wie BlackJack schon anmerkte, nimmt man das halt, wenn man merkt, dass man deutlich mehr Performance braucht, nicht "einfach so". Ein Ratschlag, den ich öfter gehört habe, ist, dass sich PyPy vor allem für rechenlastige Skripte mit längerer Laufzeit und wenig IO eignet. Andererseits: Wenn mann performance-bedürftige Dinge eh an in C geschriebene Bibliotheken wie NumPy auslagern kann, ist da eigentlich auch nicht mehr viel Luft nach oben, oder? Hinzu kommt, dass PyPy recht speicherhungrig sein kann und m.W.n. mit bestimmten Python-Konstrukten (Generatoren?) weniger Performance entfaltet.

Wenn du Python beruflich als Admin einsetzen und für die Dinge verwenden möchtest, die (unter unixoiden Systemen) traditionell mit Shell und/oder Perl-Skripten gelöst werden, ist das meiner Meinung nach nicht so das Feld, wo PyPy seine Stärken ausspielt.

(Das sind zumindest meine Erfahrungen. Einwände? :))
Syronn
User
Beiträge: 15
Registriert: Mittwoch 10. August 2016, 13:06

Danke für die hilfreichen Tipps!
Also ich habe mir 2 Projekt gesetzt mit Python. Für mich selber ohne Druck von irgendwem. Warum es Python sein muss? Weil ich es so möchte :idea:
Und weil ein paar Module in der Firmensoftware damit geschrieben wurden...

1. Einen Dateimanager
2. Eine Gui für sämtliche Powershell-Befehle für MS Exchange ab Version 2013

Ich weiß, komische Ziele und unklar warum Python, aber so sieht es nun mal aus :D

Werde ich dafür PyPy brauchen? Anhand Deiner Erklärungen wohl eher nicht, oder?
Dav1d
User
Beiträge: 1437
Registriert: Donnerstag 30. Juli 2009, 12:03
Kontaktdaten:

Syronn hat geschrieben:Werde ich dafür PyPy brauchen? Anhand Deiner Erklärungen wohl eher nicht, oder?
Nein.

(Längere Antwort) Es heisst immer Python sei langsam, trotzdem wird is so ziemlich überall eingesetzt, in den meisten Fällen ist die Geschwindigkeit komplett irrelevant, weil das langsamste nunmal der Benutzer oder allgmein IO ist (warten auf Daten, schreiben von Daten, Benutzereingaben ...). Selbst in Simulationen, Bioinformatik, etc. wird Python problemlos verwendet, man muss sich nur zu helfen wissen, meistens C Extensions, glücklicherweise haben sich schon viele Leute vorher mit solchen Dingen beschäftigt und haben Lösungen dafür entwickelt, wie numpy und eben PyPy.

Generell greifst du aber erst auf solche Lösungen zurück wenn du gemessen und analysiert hast, dass etwa zu langsam ist!
the more they change the more they stay the same
Benutzeravatar
snafu
User
Beiträge: 6738
Registriert: Donnerstag 21. Februar 2008, 17:31
Wohnort: Gelsenkirchen

Syronn hat geschrieben:1. Einen Dateimanager
2. Eine Gui für sämtliche Powershell-Befehle für MS Exchange ab Version 2013
Da bringt PyPy dir keinen Mehrwert.

Wie schon geschrieben wurde: PyPy ist für rechenlastige Programme gedacht, wo du 100.000 Schleifendurchläufe hast und merkst, dass dein Programm einige Sekunden für die Lösung benötigt. Und bevor man zu PyPy greift, sollte man erstmal schauen, ob man das Problem nicht mittels C-Extensions abbilden kann. Da gibt es viele spezialisierte Module, die man sich bei Bedarf z.B. von PyPI herunterladen kann (wobei man für den Vorgang des Herunterladen und Installieren normalerweise das Tool `pip` benutzt).
BlackJack

@Syronn: Insbesondere das mit der GUI kann ein Nachteil von PyPy sein. Ich weiss nicht ob es dafür ausser Tk eine GUI-Anbindung gibt, die sich einfach installieren lässt. Mit Tk möchte man eigentlich keine komplexeren GUIs erstellen.

Bei der PowerShell-Geschichte lohnt sich eventuell ein Blick auf IronPython, ob das noch aktuell gepflegt wird. Denn PowerShell ist ja doch eher mit .NET anzusprechen als das man da wirklich die Shell per Textein- und ausgabe ”fernsteuern” will.
Syronn
User
Beiträge: 15
Registriert: Mittwoch 10. August 2016, 13:06

Wow, sehr aktiv das Forum, gefällt mir.
Erstmal ein Kompliment an Euch alle für die netten und hilfreichen Antworten!

Eins habe ich noch nicht ganz verstanden. Warum nicht mit Python 3 beginnen? Ja, Python 2.7 wird noch unterstützt und weiterentwickelt, aber 2020 soll da ja nochmal ordentlich Schwung gegeben werden.
2020 bin ich 27 Jahre, also habe noch ein paar Jahe vor mir, daher frage ich mich, ob es nicht sinnvoll ist mit P3 zu beginnen, oder ist die Syntax sich so sehr ähnlich, dass es quasi egal ist?
Sirius3
User
Beiträge: 17741
Registriert: Sonntag 21. Oktober 2012, 17:20

@Syronn: solange Du jetzt noch kein konkretes Paket kennst, das Du brauchst und das es nur in 2.x gibt, fang mit 3.5 an. Dich als Anfänger werden die netten Gimmicks freuen und von der schlechteren Unicode-Unterstützung wirst Du vorerst wahrscheinlich nichts merken.
Benutzeravatar
/me
User
Beiträge: 3555
Registriert: Donnerstag 25. Juni 2009, 14:40
Wohnort: Bonn

Syronn hat geschrieben:Warum nicht mit Python 3 beginnen?
Als Python 3 startete waren viele externe Packages noch nicht von Python 2 portiert vorhanden. Das hat sich inzwischen geändert, sitzt aber immer noch in einigen Köpfen fest. Zudem wird immer gerne "Unicode vs. Bytes" im Zusammenspiel mit HTTP aus der Ecke gekramt.

Mich beschleicht mehr und mehr das Gefühl, dass das zum Teil eine religiöse Debatte geworden ist.

Ich selber bin vor Jahren komplett auf Python 3 umgestiegen und habe keine Probleme damit - im Gegenteil!
BlackJack

@/me: Geworden? Ich hatte von Anfang an das Gefühl, dass die Leute die für Python 3 ”argumentiert” haben, weltfremde, religiöse Fanatiker waren. :twisted: Ich kann auf Jahre nicht auf Python 3 umsteigen, weil es nicht in meiner Macht liegt die Zielplattform(en) für die Software die ich schreibe zu bestimmen. Und es gibt sogar Kunden die immer noch CentOS-Versionen einsetzen bei denen Python 2.4 installiert ist. Auf mindestens zwei NAS-Systemen ist das auch noch drauf.

Und selbst da wo ich beinflussen könnte welche Python-Version verwendet wird, habe ich mit dem entfernen von Posix und Unicode Probleme. Und das nur damit's für Anfänger angeblich einfacher wird. Die sich am Ende aber dann doch mit den gleichen Sachen herumschlagen müssen wie bei Python 2. Man muss halt explizit an den ”Grenzen” mit konkreten Kodierungsangaben (de)kodieren, sonst hat man kein robustes Programm. Und so sehr man sich das anders wünschen mag: Dateinamen und Kommandozeilenargumente sind Bytefolgen und keine Zeichenfolgen. Zumindest ausserhalb von Windows. Bei Python 2 fallen einem Kodierungsprobleme wenigstens *sofort* auf die Füsse, weil da (gemäss Zen) nicht geraten wird.
Benutzeravatar
snafu
User
Beiträge: 6738
Registriert: Donnerstag 21. Februar 2008, 17:31
Wohnort: Gelsenkirchen

Syronn hat geschrieben:oder ist die Syntax sich so sehr ähnlich, dass es quasi egal ist?
Die Syntax ist sehr ähnlich. Jedoch verhalten sich einige Builtin-Funktionen und der Interpreter generell sich an einigen Punkten unterschiedlich. Einem Anfänger würde ich immer raten, dass er mit Python 3 startet, solange nicht gute Gründe dagegen sprechen.
Benutzeravatar
snafu
User
Beiträge: 6738
Registriert: Donnerstag 21. Februar 2008, 17:31
Wohnort: Gelsenkirchen

@BlackJack:
Bezüglich der Kodierungsproblematik von Dateinamen gibt es seit Python 3.2 ja im `os`-Modul die Funktionen `fsencode()` bzw `fsdecode()`. Funktionieren diese in deinen Augen nicht korrekt oder stört dich dieser explizite Zwischenschritt?
Antworten