Gentoo Forums
Gentoo Forums
Gentoo Forums
Quick Search: in
python Version
View unanswered posts
View posts from last 24 hours
View posts from last 7 days

 
Reply to topic    Gentoo Forums Forum Index Deutsches Forum (German)
View previous topic :: View next topic  
Author Message
flammenflitzer
Advocate
Advocate


Joined: 25 Nov 2003
Posts: 3007
Location: Berlin

PostPosted: Thu Dec 26, 2013 4:38 pm    Post subject: python Version Reply with quote

Hallo,
Code:
eselect python list
Available Python interpreters:
  [1]   python2.7
  [2]   python3.2 *
  [3]   python3.3

Was sollte man da setzten? Ich habe aktuell 3.2. Jetzt ist 3.3 stabil in portage. Viele Programme scheinen 2.7 zu bevorzugen.
Back to top
View user's profile Send private message
Jean-Paul
Apprentice
Apprentice


Joined: 13 Apr 2009
Posts: 166

PostPosted: Fri Dec 27, 2013 9:51 pm    Post subject: Reply with quote

Hi,

Quote:
eselect python list
Available Python interpreters:
[1] python2.7 *
[2] python3.3

Python-3.2 hab ich gar nicht mehr, wurde imho mit Python-3.3 entfernt.
_________________
”Everything should be made as simple as possible, but no simpler.” – Albert Einstein
Back to top
View user's profile Send private message
mv
Advocate
Advocate


Joined: 20 Apr 2005
Posts: 3793

PostPosted: Sat Dec 28, 2013 10:12 am    Post subject: Reply with quote

Wenn Du nicht selbst in Python enwickelst, würde ich >=python-3 maskieren: Es gibt fast nichts, was >python-2.7 braucht, aber umgekehrt laufen viele Sachen nicht mit python-3* und werden es wohl auch nie tun.
Back to top
View user's profile Send private message
ulenrich
Veteran
Veteran


Joined: 10 Oct 2010
Posts: 1122

PostPosted: Sat Dec 28, 2013 11:34 am    Post subject: Reply with quote

Code:
# equery h python_single_target_python3_3
 * Searching for USE flag python_single_target_python3_3 ...
[IP-] [  ] kde-base/kate-4.12.0:4
[IP-] [  ] media-gfx/hugin-2013.0.0-r1:0
[IP-] [  ] net-misc/youtube-dl-2013.12.20:0
[IP-] [  ] sys-apps/util-linux-2.24:0
[IP-] [  ] x11-libs/libxcb-1.9.3:0

Alle ebuilds tauchen auch auf, wenn
# equery h python_single_target_python2_7

@mv , wenn man sehr viel mit emerge von portage hantiert, ist python3 nicht ein klitze-wenig schneller? Wieso taucht portage eigentlich nicht in der Liste auf?
_________________
fun2gen2
Back to top
View user's profile Send private message
mv
Advocate
Advocate


Joined: 20 Apr 2005
Posts: 3793

PostPosted: Sat Dec 28, 2013 2:02 pm    Post subject: Reply with quote

Quote:
ist python3 nicht ein klitze-wenig schneller?

Es gab mal einen Thread hier mit verschiedenen Benchmarks. Manche hatten mit pypy enorme Geschwindigkeitsvorteile, bei anderen ging es deutlich langsamer - hängt wohl i.W. vom RAM ab. Beim "offiziellen" Python-Interpreter würde ich keine großen Geschwindigkeitsunterschiede erwarten, aber ich habe python3 seit jeher maskiert, also keinen wirklichen Zeitvergleich.
Back to top
View user's profile Send private message
ulenrich
Veteran
Veteran


Joined: 10 Oct 2010
Posts: 1122

PostPosted: Sat Dec 28, 2013 5:52 pm    Post subject: Reply with quote

mv wrote:
Quote:
ist python3 nicht ein klitze-wenig schneller?

Es gab mal einen Thread hier mit verschiedenen Benchmarks. Manche hatten mit pypy enorme Geschwindigkeitsvorteile, bei anderen ging es deutlich langsamer - hängt wohl i.W. vom RAM ab. Beim "offiziellen" Python-Interpreter würde ich keine großen Geschwindigkeitsunterschiede erwarten, aber ich habe python3 seit jeher maskiert, also keinen wirklichen Zeitvergleich.


Pypy is für mich wohl ausser Frage:
mit meinen mikrigen 4 Gbyte Ram lässte es sich vermutlich gar nicht compilieren. Ausserdem ist die Zeitersparnis weg, wenn man dafür diese virtuelle Maschine eine Woche lang backen muss :(

Python3 fühlt sich ein (klitze-klein) wenig schneller an mit Portages emerge. Die Erklärung dafür war im englischen Forum, wenn ich richtig erinnere, dass es im Gegensatz zu Python2 Klassen hat und daher ein besseres Caching der Funktionen. Wenn man nur Gentoo+stable alle paar Wochen updaten will, wird die wenig bessere Performance ncht ins Gewicht fallen!

PS: Ich merke gerade auf meiner experimentellen Gnome-3.10 Partition:
!! The ebuild selected to satisfy "media-sound/gnome-music" has unmet requirements.
- media-sound/gnome-music-3.10.1::gentoo USE="" PYTHON_SINGLE_TARGET="-python3_2 -python3_3"
Da ist dann doch nichts mehr möglich mit Python2. Ich habe das vorhin auch nicht gewusst, weil ich ein alter Kdeler bin ...
_________________
fun2gen2
Back to top
View user's profile Send private message
mv
Advocate
Advocate


Joined: 20 Apr 2005
Posts: 3793

PostPosted: Sat Dec 28, 2013 6:56 pm    Post subject: Reply with quote

Quote:
mit meinen mikrigen 4 Gbyte Ram[/quote9
Bei mir sind es 1 GB auf der kleinen, 2 GB auf der großen Maschine und 512 MB auf dem Laptop...
[quote="ulenrich"]Python3 fühlt sich ein (klitze-klein) wenig schneller an mit Portages emerge.

"Fühlt sich an". Hast Du Benchmarks?
Als ich vor ewigen Zeiten mal Portage mit Python3 probiert habe, hatte ich nur schlechte Ausgaben bem wget und die Information, dass das in Python3 nicht geändert werden soll, daher war es nicht attraktiv. Das war damals allerdings noch python3.1 oder so; vielleicht wurde es entgegen der Ankündigung doch gefixt.
Quote:
dass es im Gegensatz zu Python2 Klassen hat

Wie meinen? Python2 hat freilich Klassen. Du meinst vermutlich irgendeine bestimmte Klasse, die speziell von Portage genutzt wird!?
Quote:
PYTHON_SINGLE_TARGET="-python3_2 -python3_3"

Klar, wenn man ein solches Projekt braucht, dann braucht man halt pyton3. Mich hat es aber sehr gewundert, dass es sehr wenige solche Projekte gibt, zumal der offizielle Ratschlag des Python-Autors war, nicht auf Abwärtskompatibilität zu achten. Einer der klassischen Unterschiede zwischen Theorie und Praxis. Bei meinem einzigen Python-Spielzeug-Projekt war auch die einzige notwendige Änderung die print()-Syntax, die leider bewusst inkompatibel gehalten wurde (ansonsten würden wahrscheinlich 90% der python2-Projekte unverändert mit python3 laufen). M.E. war dieser bewusste Kompatibilitätsbruch eine schlechte Idee, aber das braucht man jetzt nicht mehr zu disktutieren.
Back to top
View user's profile Send private message
ulenrich
Veteran
Veteran


Joined: 10 Oct 2010
Posts: 1122

PostPosted: Sun Dec 29, 2013 12:51 am    Post subject: Reply with quote

mv wrote:
ulenrich wrote:
Python3 fühlt sich ein (klitze-klein) wenig schneller an mit Portages emerge.

"Fühlt sich an". Hast Du Benchmarks?
Als ich vor ewigen Zeiten mal Portage mit Python3 probiert habe, hatte ich nur schlechte Ausgaben bem wget und die Information, dass das in Python3 nicht geändert werden soll, daher war es nicht attraktiv. Das war damals allerdings noch python3.1 oder so; vielleicht wurde es entgegen der Ankündigung doch gefixt.

Python-3.1 war auch nie Gentoo-stable. Das ist schon ein Zeichen, dass es nicht möglich war! Wegen der Performance habe ich nochmal nachgeschaut: Es ist die verbesserte dictionary Verwaltung mit python-3.3, was emerge sehr nützlich ist. Ist zwar nur 20% weniger Ram, der dadurch besser genutzt wird, aber das ist schon ein Betrag, der die Effektivität des Caching dann berührt.
Quote:
Quote:
PYTHON_SINGLE_TARGET="-python3_2 -python3_3"
Klar, wenn man ein solches Projekt braucht, dann braucht man halt pyton3. Mich hat es aber sehr gewundert, dass es sehr wenige solche Projekte gibt, zumal der offizielle Ratschlag des Python-Autors war, nicht auf Abwärtskompatibilität zu achten. Einer der klassischen Unterschiede zwischen Theorie und Praxis. Bei meinem einzigen Python-Spielzeug-Projekt war auch die einzige notwendige Änderung die print()-Syntax, die leider bewusst inkompatibel gehalten wurde (ansonsten würden wahrscheinlich 90% der python2-Projekte unverändert mit python3 laufen). M.E. war dieser bewusste Kompatibilitätsbruch eine schlechte Idee, aber das braucht man jetzt nicht mehr zu disktutieren.

Hey, wenn Du als Publikum nur System-Administratoren hast, deren Englisch eine Berufsvoraussetzung ist, hast Du natürlich Recht. Aber erklär mal einem Asiaten, dass er erst Englisch lernen muss um seine Variablen benennen zu können :) Im Ernst, die String Behandlung in Python-2 ist ein solches Durcheinander, voller Workarounds und kompliziert, dass es kaum zu erklären ist. Ich bin froh über einen klaren Schlusstrich.
_________________
fun2gen2
Back to top
View user's profile Send private message
flammenflitzer
Advocate
Advocate


Joined: 25 Nov 2003
Posts: 3007
Location: Berlin

PostPosted: Sun Dec 29, 2013 2:09 pm    Post subject: Reply with quote

So wie ich das verstehe:
Python interpreter auf python2.7 setzen und in der make.conf
PYTHON_TARGETS="python2_7 python3_3"
PYTHON_SINGLE_TARGET="python3_3"
Richtig?
Back to top
View user's profile Send private message
Christian99
l33t
l33t


Joined: 28 May 2009
Posts: 900

PostPosted: Sun Dec 29, 2013 2:39 pm    Post subject: Reply with quote

python auf 2.7 und in der make.conf am besten gar nix setzen. so habs ich und keine probleme.
Back to top
View user's profile Send private message
ulenrich
Veteran
Veteran


Joined: 10 Oct 2010
Posts: 1122

PostPosted: Sun Dec 29, 2013 3:33 pm    Post subject: Reply with quote

Man kann für jeden ebuild es extra setzen wie für jedes USE flag in der /etc/portage/package.use
<category>/<item> python_single_target_python2_7 -python_single_target_python3_2 -python_single_target_python3_3
_________________
fun2gen2
Back to top
View user's profile Send private message
mv
Advocate
Advocate


Joined: 20 Apr 2005
Posts: 3793

PostPosted: Mon Dec 30, 2013 6:40 am    Post subject: Reply with quote

ulenrich wrote:
Hey, wenn Du als Publikum nur System-Administratoren hast, deren Englisch eine Berufsvoraussetzung ist, hast Du natürlich Recht. Aber erklär mal einem Asiaten, dass er erst Englisch lernen muss um seine Variablen benennen zu können :)

Ich verstehe nicht, worauf Du hinaus willst: Englische Zeichen einzugeben, ist für einen typischen Asiaten genauso normal wie die Bedienung der Maus - Englische Zeichen lernt dort auch jeder, der überhaupt Lesen und Schreiben kann. Aber selbst wenn dem nicht so wäre: Schlüsselworte sind sowieso Englisch und man braucht für utf8-Behandlung keine künstlichen Inkomapibilitäten wie bei print einzubauen.
Quote:
Im Ernst, die String Behandlung in Python-2 ist ein solches Durcheinander, voller Workarounds und kompliziert, dass es kaum zu erklären ist. Ich bin froh über einen klaren Schlusstrich.

Was hat das damit zu tun, dass python-3 um print() zwingend Klammern verlangt, was in der Praxis der Hauptgrund für die Inkompatibilität ist? Es wäre verständlich, wenn in der Anleitung nur noch die Variante becshrieben wird und ggf, mit einem Warnmodus auf die obsolete Schreibweise hingewiesen wird. Aber künstlich mit einem Fehler abzubrechen... andere Sprachen wie C++ oder Perl machen doch vor, wie man neue Features einbauen und dabei trotzdem weitestgehend die Kompatibilität erhalten kann.
Back to top
View user's profile Send private message
Jean-Paul
Apprentice
Apprentice


Joined: 13 Apr 2009
Posts: 166

PostPosted: Mon Dec 30, 2013 12:20 pm    Post subject: Reply with quote

mv wrote:
Was hat das damit zu tun, dass python-3 um print() zwingend Klammern verlangt,...
Die Klammern sind deshalb nötig, weil print kein Schlüsselwort mehr ist, sondern eine build-in-Funktion.

mv wrote:
...was in der Praxis der Hauptgrund für die Inkompatibilität ist?
Die größte Inkompatibilität ist der Datentyp str. In python-2.X gibt es str, was zum Speichern von byte-Folgen verwendet wird und unicode zum Speichern von Text.
In python-3.X gibt es str, was zum Speichern von Text verwendet wird und byte (bzw. bytearray) für byte-Folgen.

Es gibt Konvertierungs-Scripts die ein Großteil der Konvertierung erledigen, aber man muss schon noch selbst gehörig Hand anlegen,
weil python-3 eigentlich eine andere Sprache ist.
Manche Entwickler scheuen diese Arbeit und deshalb haben wir die Situation die wir haben.
_________________
”Everything should be made as simple as possible, but no simpler.” – Albert Einstein
Back to top
View user's profile Send private message
mv
Advocate
Advocate


Joined: 20 Apr 2005
Posts: 3793

PostPosted: Mon Dec 30, 2013 11:47 pm    Post subject: Reply with quote

Jean-Paul wrote:
Die Klammern sind deshalb nötig, weil print kein Schlüsselwort mehr ist, sondern eine build-in-Funktion.

Das ist schon klar, aber es wäre keine Kunst, print zusätzlich als Schlüsselwort zu akzeptieren, um die Kompatibilität beizubehalten.
Quote:
Es gibt Konvertierungs-Scripts die ein Großteil der Konvertierung erledigen, aber man muss schon noch selbst gehörig Hand anlegen

Das kommt ziemlich auf das Projekt an, das zu konvertieren ist. Ich war sehr erstaunt, dass mein Spielzeugprojekt nach den printf-Fixes direkt mit python-3 lief (zugegebenermaßen nur ein bisschen heuristisch getestet), schließe daraus aber auch, dass das für viele weitere Projekte so gilt (so klein war es nun auch wieder nicht, und es enthielt eine Menge Stringbehandlungen). Klar, es war kein spezielles utf8-Projekt, aber das sind viele in python geschriebene Projekte ohnehin nicht: Für die würde eine print-Sonderbehandlung möglicherweise die Konvertierung sparen, und es ist für ein Projekt nur von Vorteil, wenn es mit allen Python-Dialekten funktioniert...
Back to top
View user's profile Send private message
Display posts from previous:   
Reply to topic    Gentoo Forums Forum Index Deutsches Forum (German) All times are GMT
Page 1 of 1

 
Jump to:  
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum