Ankündigung

Einklappen
Keine Ankündigung bisher.

Python 3.2 Migration in develop bzw. 1.0 Release

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

    Python 3.2 Migration in develop bzw. 1.0 Release

    Hallo,

    es gibt wahrscheinlich nie den idealen Zeitpunkt und irgendwann muss es sowieso gemacht werden. Und je mehr Benutzer es gibt, desto mehr haben damit zu tun.

    Daher bin ich gerade dabei mir die Migration auf Python 3.2 anzusehen.
    Sowohl Debian wheezy als auch Ubuntu 12.04 bringen die notwendigen Pakete mit. Ich würde natürlich auch noch ein neues Pi-Image zur Verfügung stellen.

    Gibt es aus Eurer Sicht etwas das dagegen spricht? Was meint Ihr?

    EDIT:
    So, die Würfel sind gefallen. Das 1.0 Release wird Python 3.2 benötigen. Der develop Branch auf github ist umgestellt.

    Momentan empfehle ich den develop Branch zum testen und probieren/spielen.

    Folgende Schritte sind auf einem Debian/Ubuntu notwendig:
    Code:
    $ git pull  # das sollte man in regelmäßigen Abständen wiederholen...
    $ git checkout develop
    
    # python3 installieren
    $ sudo apt-get install python3 python3-dev python3-setuptools
    
    # für Sonnenaufgang & Co.
    $ sudo easy_install3 pip
    $ sudo pip-3.2 install ephem
    
    # Wenn man das rrd Plugin nutzen möchte
    apt-get install librrd-dev
    cd lib/3rd/rrdtool
    python3 setup.py install
    
    # Es müssen evtl. kleine Anpassungen an den Logiken vorgenommen werden
    # der folgende Befehl zeigt Änderungen an
    2to3-3.2 -f idioms -f all meinelogik.py
    # der folgende übernimmt die 'Änderungen
    2to3-3.2 -f idioms -f all [B]-w[/B] meinelogik.py
    
    # Python3 nutzt die pyc Files nicht mehr, die können gelöscht werden
    find . -name *.pyc -type f -print0 | xargs -0 /bin/rm -f
    
    # Das Config-Format hat sich leicht geändert. Statt ',' werden '|' für das Aufteilen von Attributen verwendet.
    # Es gibt ein kleine Script das die Konvertierung übernimmt
    # Unter items/NAME.conf.bak liegt die alte Config
    # Bitte nur einmal ausführen
    $ ./tools/conf2-1.0.sh
    Über mutige Tester und Feedback freue ich mich.

    Bis bald

    Marcus

    #2
    Zitat von mknx Beitrag anzeigen
    es gibt wahrscheinlich nie den idealen Zeitpunkt und irgendwann muss es sowieso gemacht werden.
    Das verstehe ich nicht:
    Warum muss es irgendwann gemacht werden? Du musst doch nur auf eine neue Python-Version umstellen, wenn du ein Feature brauchst, das in den niedrigeren nicht vorhanden ist, oder?

    Oder ist 3.2 nicht abwärts-kompatibel, so dass User die (aus anderen Gründen 3.2 nutzen (müssen)) sh.py heute nicht nutzen können?

    Gruß,
    Hendrik

    Kommentar


      #3
      Ich antworte mir mal selbst:
      What?s New In Python 3.0 ? Python v3.0.1 documentation

      3.0 ist nicht abwärtskompatibel.. Ok.

      Kommentar


        #4
        Hi Hendrik,

        ja leider ist die 3.X Reihe nicht kompatibel mit der 2.X Reihe. Und ja, es gibt einige nette Features in der 3.2 die das Programmieren einfacher machen.

        Im Hintergrund muss einiges umgestellt werden. Für den Benutzer ist wahrscheinlich kein großer Aufwand und ich würde, auch da, unterstützen.

        Bis bald

        Marcus

        Kommentar


          #5
          Hallo,

          Ok es wird ernst. Bitte keine Pull-Request mehr stellen oder Änderungen in github in den nächsten Tagen machen.

          Ich stelle es auf Python3.2 um.

          Wenn ich fertig bin, gebe ich hier wieder Bescheid.

          Bis bald

          Marcus

          Kommentar


            #6
            Hallo,

            ich habe develop auf Python 3.2 umgestellt. Es wird momentan nicht für den produktiven Einsatz empfohlen!

            Nebenbei sind noch ein paar andere Dinge verbessert worde, so kann das rrd-Plugin nun auch mit den Plots der smartVISU verwendet werden.

            Folgende Schritte sind auf einem Debian/Ubuntu notwendig:
            Code:
            # python3 installieren
            $ sudo apt-get install python3 python3-dev python3-setuptools
            
            # für Sonnenaufgang & Co.
            $ sudo easy_install3 pip
            $ sudo pip-3.2 install ephem
            
            # Wenn man das rrd Plugin nutzen möchte
            apt-get install librrd-dev
            cd lib/3rd/rrdtool
            python3 setup.py install
            
            # Es müssen evtl. kleine Anpassungen an den Logiken vorgenommen werden
            # der folgende Befehl zeigt Änderungen an
            2to3-3.2 -f idioms -f all meinelogik.py
            # der folgende übernimmt die 'Änderungen
            2to3-3.2 -f idioms -f all [B]-w[/B] meinelogik.py
            
            # Python3 nutzt die pyc Files nicht mehr, die können gelöscht werden
            find . -name *.pyc -type f -print0 | xargs -0 /bin/rm -f
            Über Tester und Feedback freue ich mich.

            EDIT: Ein Backup vor dem Update ist angebracht...

            Bis bald

            Marcus

            Kommentar


              #7
              Python 3.2 und Pyhton 2.6 auf Debian Squeeze

              Hallo Marcus,

              vorab danke und Kompliment zu smarthome.py! Ich finde super klasse, was Du hier gestartet hast.
              Hatte vorher je ein wiregate und ein communitygate als KNX 1wire gateway (für ein Haus und eine Wohnung).
              Bin jetzt auf sh.py umgestiegen für 1wire. Läuft seit Wochen super, stabil und braucht nur minimal Hauptspeicher. Macht Spaß!

              Zu meiner Frage:
              Setze sh.py auf einem debian squeeze system ein.
              Möchte das system vorerst auf squeeze lassen und möchte auch python 2.6 weiter nutzen.
              Kann ich auf dieser Umgebung parallel python 3.2 mit sh.py nutzen? Können python 2.6 programme parallel dazu weiterlaufen?

              Viele Grüße
              Thomas

              Kommentar


                #8
                Zitat von mknx Beitrag anzeigen
                Hallo,

                ich habe develop auf Python 3.2 umgestellt. Es wird momentan nicht für den produktiven Einsatz empfohlen!

                Nebenbei sind noch ein paar andere Dinge verbessert worde, so kann das rrd-Plugin nun auch mit den Plots der smartVISU verwendet werden.

                Folgende Schritte sind auf einem Debian/Ubuntu notwendig:
                Code:
                # Wenn man das rrd Plugin nutzen möchte
                apt-get install librrd-dev
                cd lib/3rd/rrdtool
                python3 setup.py install
                Da schlägts fehl ... was hast Du mit python3 setup.py install vor ?
                Ich finde weder ein passende setup.py noch das Verzeichnis 3rd.

                Ansonsten ja eine richtige Paketschlacht ...

                Zur Info:
                # cat /proc/version
                Linux version 3.2.0-4-686-pae (debian-kernel@lists.debian.org) (gcc version 4.6.3 (Debian 4.6.3-14) ) #1 SMP Debian 3.2.46-1
                Umgezogen? Ja! ... Fertig? Nein!
                Baustelle 2.0 !

                Kommentar


                  #9
                  Hallo Thomas,

                  schön das Dir die Lösung gefällt und stabil läuft. So ist das auch gedacht. :-)

                  Zitat von taichber Beitrag anzeigen
                  Zu meiner Frage:
                  Setze sh.py auf einem debian squeeze system ein.
                  Möchte das system vorerst auf squeeze lassen und möchte auch python 2.6 weiter nutzen.
                  Kann ich auf dieser Umgebung parallel python 3.2 mit sh.py nutzen? Können python 2.6 programme parallel dazu weiterlaufen?
                  Prinzipiell können mehrere Python-Version parallel betrieben werden. Welche Version verwendet wir hängt von der Verlinkung ab. Also z.B. python -> python2.6.2 oder python3 -> python3.2.3.

                  Für Squeeze gibt es leider keine fertigen 3.2 Pakete. Je nach Linux-Sattelfestigkeit sollte es möglich sein, diese selbst zu compilieren/bauen.
                  Siehe z.B. RPi Debian Python3 - eLinux.org
                  Ich würde direkt 3.2.5 verwenden.

                  Alternativ dazu könntest Du auch noch einen Pi (mit guter SD für 70€) in Betracht ziehen. Für den werde ich demnächst ein Image bauen.

                  Bis bald

                  Marcus

                  Kommentar


                    #10
                    Hallo Mirko,

                    Zitat von JuMi2006 Beitrag anzeigen
                    Da schlägts fehl ... was hast Du mit python3 setup.py install vor ?
                    Ich finde weder ein passende setup.py noch das Verzeichnis 3rd.

                    Ansonsten ja eine richtige Paketschlacht ...
                    dieser Abschnitt stellt die Python3-Schnittstelle für rrd bereit. Dafür gibt es momentan leider kein Paket. Und ja librrd-dev hat leider viele Abhängigkeiten.

                    Ich denke Du bewegst Dich nicht in einem aktuellen develop-Branch.

                    git pull && git checkout develop

                    Bis bald

                    Marcus

                    P.S. für rrd fehlt momentan noch die min/max/avg-Methode an den Items. Werde ich die Tage nachreichen. Das gleiche gilt für Deinen Patch.

                    Kommentar


                      #11
                      Zitat von mknx Beitrag anzeigen
                      Für Squeeze gibt es leider keine fertigen 3.2 Pakete. Je nach Linux-Sattelfestigkeit sollte es möglich sein, diese selbst zu compilieren/bauen.
                      Siehe z.B. RPi Debian Python3 - eLinux.org
                      Ich würde direkt 3.2.5 verwenden.
                      Das werde ich mir anschauen. Sollte machbar sein.

                      Wäre eventuell Python 2.6 unter wheezy möglich?? Dann könnte ich auf Wheezy upgraden und dann meine Python 2.6 Programme parallel zu sh.py mit Python 3.2 laufen lassen

                      Zitat von mknx Beitrag anzeigen
                      Alternativ dazu könntest Du auch noch einen Pi (mit guter SD für 70€) in Betracht ziehen. Für den werde ich demnächst ein Image bauen.
                      Das möchte ich möglichst vermeiden. Nicht wegen der Kosten, aber das wäre wieder ein weiterer Rechner der zu warten, usw.

                      Wäre aber sicher eine Möglichkeit.

                      Viele Grüße
                      Thomas

                      Kommentar


                        #12
                        Hi Thomas,

                        Zitat von taichber Beitrag anzeigen
                        Wäre eventuell Python 2.6 unter wheezy möglich?? Dann könnte ich auf Wheezy upgraden und dann meine Python 2.6 Programme parallel zu sh.py mit Python 3.2 laufen lassen
                        es ist möglich 2.7 unter wheezy zu installieren. Damit kannst Du Deine 2.6 Programme laufen lassen. Die sind kompatibel.

                        Das Update auf wheezy würde ich alleine wegen den Security-Updates empfehlen.

                        Bis bald

                        Marcus

                        Kommentar


                          #13
                          Ich nochmal, was wollte mir der Dichter damit sagen?

                          Code:
                          #python3 setup.py install
                          running install
                          running build
                          running build_ext
                          building 'rrdtool' extension
                          gcc -pthread -DNDEBUG -g -fwrapv -O2 -Wall -Wstrict-prototypes -D_FORTIFY_SOURCE=2 -g -fstack-protector --param=ssp-buffer-size=4 -Wformat -Werror=format-security -fPIC -I/usr/include/python3.2mu -c rrdtool.c -o build/temp.linux-i686-3.2/rrdtool.o
                          rrdtool.c:25:20: fatal error: Python.h: Datei oder Verzeichnis nicht gefunden
                          compilation terminated.
                          error: command 'gcc' failed with exit status 1
                          Vorher kracht es schon bei:

                          Code:
                          #pip-3.2 install ephem
                          Downloading/unpacking ephem
                            Downloading ephem-3.7.5.1.tar.gz (731kB): 731kB downloaded
                            Running setup.py egg_info for package ephem
                              
                          Installing collected packages: ephem
                            Running setup.py install for ephem
                              building 'ephem._libastro' extension
                              gcc -pthread -DNDEBUG -g -fwrapv -O2 -Wall -Wstrict-prototypes -D_FORTIFY_SOURCE=2 -g -fstack-protector --param=ssp-buffer-size=4 -Wformat -Werror=format-security -fPIC -Ilibastro-3.7.5 -I/usr/include/python3.2mu -c extensions/_libastro.c -o build/temp.linux-i686-3.2/extensions/_libastro.o
                              extensions/_libastro.c:3:20: fatal error: Python.h: Datei oder Verzeichnis nicht gefunden
                              compilation terminated.
                              error: command 'gcc' failed with exit status 1
                              Complete output from command /usr/bin/python3 -c "import setuptools;__file__='/tmp/pip_build_root/ephem/setup.py';exec(compile(open(__file__).read().replace('\r\n', '\n'), __file__, 'exec'))" install --record /tmp/pip-9k4ush-record/install-record.txt --single-version-externally-managed:
                              running install
                          
                          running build
                          
                          running build_py
                          
                          creating build
                          
                          creating build/lib.linux-i686-3.2
                          
                          creating build/lib.linux-i686-3.2/ephem
                          
                          copying src/ephem/__init__.py -> build/lib.linux-i686-3.2/ephem
                          
                          copying src/ephem/stars.py -> build/lib.linux-i686-3.2/ephem
                          
                          copying src/ephem/cities.py -> build/lib.linux-i686-3.2/ephem
                          
                          creating build/lib.linux-i686-3.2/ephem/tests
                          
                          copying src/ephem/tests/test_launchpad_244811.py -> build/lib.linux-i686-3.2/ephem/tests
                          
                          copying src/ephem/tests/all.py -> build/lib.linux-i686-3.2/ephem/tests
                          
                          copying src/ephem/tests/test_usno_equinoxes.py -> build/lib.linux-i686-3.2/ephem/tests
                          
                          copying src/ephem/tests/__init__.py -> build/lib.linux-i686-3.2/ephem/tests
                          
                          copying src/ephem/tests/test_constants.py -> build/lib.linux-i686-3.2/ephem/tests
                          
                          copying src/ephem/tests/test_observers.py -> build/lib.linux-i686-3.2/ephem/tests
                          
                          copying src/ephem/tests/test_angles.py -> build/lib.linux-i686-3.2/ephem/tests
                          
                          copying src/ephem/tests/test_locales.py -> build/lib.linux-i686-3.2/ephem/tests
                          
                          copying src/ephem/tests/test_cities.py -> build/lib.linux-i686-3.2/ephem/tests
                          
                          copying src/ephem/tests/test_launchpad_236872.py -> build/lib.linux-i686-3.2/ephem/tests
                          
                          copying src/ephem/tests/test_rst.py -> build/lib.linux-i686-3.2/ephem/tests
                          
                          copying src/ephem/tests/test_bodies.py -> build/lib.linux-i686-3.2/ephem/tests
                          
                          copying src/ephem/tests/test_usno.py -> build/lib.linux-i686-3.2/ephem/tests
                          
                          copying src/ephem/tests/test_stars.py -> build/lib.linux-i686-3.2/ephem/tests
                          
                          copying src/ephem/tests/test_satellite.py -> build/lib.linux-i686-3.2/ephem/tests
                          
                          copying src/ephem/tests/test_jpl.py -> build/lib.linux-i686-3.2/ephem/tests
                          
                          copying src/ephem/tests/test_dates.py -> build/lib.linux-i686-3.2/ephem/tests
                          
                          creating build/lib.linux-i686-3.2/ephem/doc
                          
                          copying src/ephem/doc/examples.rst -> build/lib.linux-i686-3.2/ephem/doc
                          
                          copying src/ephem/doc/coordinates.rst -> build/lib.linux-i686-3.2/ephem/doc
                          
                          copying src/ephem/doc/faq.rst -> build/lib.linux-i686-3.2/ephem/doc
                          
                          copying src/ephem/doc/date.rst -> build/lib.linux-i686-3.2/ephem/doc
                          
                          copying src/ephem/doc/angle.rst -> build/lib.linux-i686-3.2/ephem/doc
                          
                          copying src/ephem/doc/catalogs.rst -> build/lib.linux-i686-3.2/ephem/doc
                          
                          copying src/ephem/doc/rise-set.rst -> build/lib.linux-i686-3.2/ephem/doc
                          
                          copying src/ephem/doc/tutorial.rst -> build/lib.linux-i686-3.2/ephem/doc
                          
                          copying src/ephem/doc/newton.rst -> build/lib.linux-i686-3.2/ephem/doc
                          
                          copying src/ephem/doc/quick.rst -> build/lib.linux-i686-3.2/ephem/doc
                          
                          copying src/ephem/doc/CHANGELOG.rst -> build/lib.linux-i686-3.2/ephem/doc
                          
                          copying src/ephem/doc/radec.rst -> build/lib.linux-i686-3.2/ephem/doc
                          
                          copying src/ephem/doc/reference.rst -> build/lib.linux-i686-3.2/ephem/doc
                          
                          copying src/ephem/doc/index.rst -> build/lib.linux-i686-3.2/ephem/doc
                          
                          creating build/lib.linux-i686-3.2/ephem/tests/jpl
                          
                          copying src/ephem/tests/jpl/oberon.txt -> build/lib.linux-i686-3.2/ephem/tests/jpl
                          
                          copying src/ephem/tests/jpl/uranus.txt -> build/lib.linux-i686-3.2/ephem/tests/jpl
                          
                          copying src/ephem/tests/jpl/neptune.txt -> build/lib.linux-i686-3.2/ephem/tests/jpl
                          
                          copying src/ephem/tests/jpl/europa.txt -> build/lib.linux-i686-3.2/ephem/tests/jpl
                          
                          copying src/ephem/tests/jpl/saturn.txt -> build/lib.linux-i686-3.2/ephem/tests/jpl
                          
                          copying src/ephem/tests/jpl/jupiter.txt -> build/lib.linux-i686-3.2/ephem/tests/jpl
                          
                          copying src/ephem/tests/jpl/phobos.txt -> build/lib.linux-i686-3.2/ephem/tests/jpl
                          
                          copying src/ephem/tests/jpl/mars.txt -> build/lib.linux-i686-3.2/ephem/tests/jpl
                          
                          copying src/ephem/tests/jpl/hyperion.txt -> build/lib.linux-i686-3.2/ephem/tests/jpl
                          
                          creating build/lib.linux-i686-3.2/ephem/tests/usno
                          
                          copying src/ephem/tests/usno/appgeo_deneb.txt -> build/lib.linux-i686-3.2/ephem/tests/usno
                          
                          copying src/ephem/tests/usno/apptopo_deneb.txt -> build/lib.linux-i686-3.2/ephem/tests/usno
                          
                          copying src/ephem/tests/usno/astrom_antares.txt -> build/lib.linux-i686-3.2/ephem/tests/usno
                          
                          copying src/ephem/tests/usno/apptopo_sun.txt -> build/lib.linux-i686-3.2/ephem/tests/usno
                          
                          copying src/ephem/tests/usno/riset_sun.txt -> build/lib.linux-i686-3.2/ephem/tests/usno
                          
                          copying src/ephem/tests/usno/astrom_mercury.txt -> build/lib.linux-i686-3.2/ephem/tests/usno
                          
                          copying src/ephem/tests/usno/risettran_rigel.txt -> build/lib.linux-i686-3.2/ephem/tests/usno
                          
                          copying src/ephem/tests/usno/risettran_moon.txt -> build/lib.linux-i686-3.2/ephem/tests/usno
                          
                          copying src/ephem/tests/usno/appgeo_moon.txt -> build/lib.linux-i686-3.2/ephem/tests/usno
                          
                          copying src/ephem/tests/usno/riset_moon.txt -> build/lib.linux-i686-3.2/ephem/tests/usno
                          
                          copying src/ephem/tests/usno/apptopo_moon.txt -> build/lib.linux-i686-3.2/ephem/tests/usno
                          
                          copying src/ephem/tests/usno/astrom_neptune.txt -> build/lib.linux-i686-3.2/ephem/tests/usno
                          
                          copying src/ephem/tests/usno/appgeo_jupiter.txt -> build/lib.linux-i686-3.2/ephem/tests/usno
                          
                          copying src/ephem/tests/usno/appgeo_sun.txt -> build/lib.linux-i686-3.2/ephem/tests/usno
                          
                          copying src/ephem/tests/usno/moon_phases.txt -> build/lib.linux-i686-3.2/ephem/tests/usno
                          
                          running build_ext
                          
                          building 'ephem._libastro' extension
                          
                          creating build/temp.linux-i686-3.2
                          
                          creating build/temp.linux-i686-3.2/extensions
                          
                          creating build/temp.linux-i686-3.2/libastro-3.7.5
                          
                          creating build/temp.linux-i686-3.2/extensions/data
                          
                          gcc -pthread -DNDEBUG -g -fwrapv -O2 -Wall -Wstrict-prototypes -D_FORTIFY_SOURCE=2 -g -fstack-protector --param=ssp-buffer-size=4 -Wformat -Werror=format-security -fPIC -Ilibastro-3.7.5 -I/usr/include/python3.2mu -c extensions/_libastro.c -o build/temp.linux-i686-3.2/extensions/_libastro.o
                          
                          extensions/_libastro.c:3:20: fatal error: Python.h: Datei oder Verzeichnis nicht gefunden
                          
                          compilation terminated.
                          
                          error: command 'gcc' failed with exit status 1
                          
                          ----------------------------------------
                          Cleaning up...
                          Command /usr/bin/python3 -c "import setuptools;__file__='/tmp/pip_build_root/ephem/setup.py';exec(compile(open(__file__).read().replace('\r\n', '\n'), __file__, 'exec'))" install --record /tmp/pip-9k4ush-record/install-record.txt --single-version-externally-managed failed with error code 1 in /tmp/pip_build_root/ephem
                          Storing complete log in /root/.pip/pip.log
                          Umgezogen? Ja! ... Fertig? Nein!
                          Baustelle 2.0 !

                          Kommentar


                            #14
                            Das Du python3-dev nicht installiert hast.

                            Hatte ich in der Auflistung vergessen und nachgetragen.

                            Sorry

                            Marcus

                            Kommentar


                              #15
                              War schon besser
                              Man soll den Abend ja nicht vor dem nächsten Tage loben:

                              Code:
                              /usr/local/smarthome/logics# 2to3-3.2 -f iodoms -f all system.py
                              RefactoringTool: Skipping implicit fixer: buffer
                              RefactoringTool: Skipping implicit fixer: idioms
                              Traceback (most recent call last):
                                File "/usr/bin/2to3-3.2", line 5, in <module>
                                  sys.exit(main("lib2to3.fixes"))
                                File "/usr/lib/python3.2/lib2to3/main.py", line 250, in main
                                  append_suffix=options.add_suffix)
                                File "/usr/lib/python3.2/lib2to3/main.py", line 63, in __init__
                                  super(StdoutRefactoringTool, self).__init__(fixers, options, explicit)
                                File "/usr/lib/python3.2/lib2to3/refactor.py", line 698, in __init__
                                  super(MultiprocessRefactoringTool, self).__init__(*args, **kwargs)
                                File "/usr/lib/python3.2/lib2to3/refactor.py", line 210, in __init__
                                  self.pre_order, self.post_order = self.get_fixers()
                                File "/usr/lib/python3.2/lib2to3/refactor.py", line 245, in get_fixers
                                  mod = __import__(fix_mod_path, {}, {}, ["*"])
                              ImportError: No module named fix_iodoms
                              Umgezogen? Ja! ... Fertig? Nein!
                              Baustelle 2.0 !

                              Kommentar

                              Lädt...
                              X