Debian 6: Python3 parallel zum System-Python ?

Probleme bei der Installation?
Antworten
Dodger
User
Beiträge: 3
Registriert: Montag 12. September 2005, 19:37

Hallo zusammen,

als sporadischer Mitleser und Wieder-Einsteiger muss ich jetzt doch mal eine Frage stellen weil ich wohl ein wenig auf dem Schlauch stehe.
Ich nutze hier ein Debian 6 und hab bisher nur das debian-eigene Python 2.6.6 installiert.
Da ich gerade wieder mit python anfange dachte ich mir das es vielleicht Sinn macht sich direkt an Python3 zu gewöhnen (hab nix exotisches vor wofür ich noch bestimmte Libs bräuchte).
Nach ein wenig rumlesen bin ich zum Schluß gekommen das ich mir "python-virtualenv" aus dem Repo installieren muss und damit ein runtergeladenes (weil nicht im Repo vorhanden) Python3 einbinden kann und gleichzeitig für zukünftige Projekte gut gerüstet bin.

Das Python3 hab ich einfach mal unter "/opt/Python-3.3.2" installiert. Und jetzt dachte ich mir ich könnte ein venv damit bauen:

Code: Alles auswählen

frank@host:~$ virtualenv --python /opt/Python-3.3.2/python ~/virtualenvironment/my_new_app
Running virtualenv with interpreter /opt/Python-3.3.2/python
  File "/usr/lib/pymodules/python2.6/virtualenv.py", line 17
    except ImportError, e:
                      ^
SyntaxError: invalid syntax
frank@host:~$
Irgendwie habe ich das Gefühl da einen grundlegenden Denkfehler zu haben... geht sowas mit virtualenv überhaupt ? (Andererseits, es gibt ja die Option "--python")

Wäre schön wenn mir jemand mal auf die Sprünge helfen könnte wie ich am einfachsten mit Python3 arbeiten kann ohne auf externe Repo´s o.ä. zurückgreifen zu müssen.

Vielen Dank & schöne Grüße,
Frank
BlackJack

@Dodger: Offenbar wird damit virtualenv selber auch mit dem angegebenen Python ausgeführt und dazu muss das für Python 3 dann natürlich auch mit Python 3 ausführbar sein.
Hellstorm
User
Beiträge: 231
Registriert: Samstag 22. Juni 2013, 15:01

Kannst du nicht einfach Python 3 komplett parallel zu Python 2 als Systemanwendung installieren, so wie das auch wäre, wenn es im Repository wäre? Du musst Virtualenv doch nicht unbedingt nutzen (nur wenn du irgendwelche besonderen Bibliothekn verwendest, was du ja wohl nicht vorhast) . Ich würde doch Python 3 einfach parallel installieren, das beißt sich dann ja nicht unbedingt.
BlackJack

@Hellstorm: Virtualenv muss man nicht für besondere Bibliotheken benutzen. Sowie man auch nur *irgendeine* Bibliothek ausserhalb der Standardbibliothek verwendet, kann ein virtualenv Sinn machen.

Man könnte das System-virtualenv deinstallieren, wenn das nicht für irgendetwas anderes benötigt wird, und manuell ein virtualenv für Python 3 installieren.

Vielleicht lassen die sich auch parallel installieren, so dass das für Python 3 dann auf den Namen ``virtualenv3`` hört.

Edit: Man könnte aber auch einfach bei Python 2 bleiben bis sich Python 3 soweit durchgesetzt hat, dass man diese Probleme nicht mehr hat. :-)
Hellstorm
User
Beiträge: 231
Registriert: Samstag 22. Juni 2013, 15:01

BlackJack hat geschrieben:@Hellstorm: Virtualenv muss man nicht für besondere Bibliotheken benutzen. Sowie man auch nur *irgendeine* Bibliothek ausserhalb der Standardbibliothek verwendet, kann ein virtualenv Sinn machen.
Jo, das stimmt, ich nutze das gerade für eine halbfertigen Paramiko-Weiterentwicklung für Python 3, die ich nicht systemweit installieren will. Aber irgendwie ist das alles ziemlich nerviger Aufwand. Wenn die Bibliothek relativ vernünftig und stabil ist, und man sie vielleicht öfters nutzen will, dann ist es doch praktischer, sie systemweit zu installieren (Möglicherweise gibt es sie sogar schon in der aktuellsten Version im Paketmanager, dann ist doch alles super).

BlackJack hat geschrieben: Vielleicht lassen die sich auch parallel installieren, so dass das für Python 3 dann auf den Namen ``virtualenv3`` hört.
Also ich hab in meiner Debian-VM beide Pythons parallel laufen, auch mit Virtualenv. Das funktioniert ohne Probleme.

BlackJack hat geschrieben: Edit: Man könnte aber auch einfach bei Python 2 bleiben bis sich Python 3 soweit durchgesetzt hat, dass man diese Probleme nicht mehr hat. :-)
Naja, wenn jeder bei Python 2 bleibt, setzt sich Python 3 ja nicht durch ;) Außerdem liegt das Problem vom TE ja nicht an Python 3, sondern an seinem uralten Debian ;) Ein aktuelles Debian hat ja einfach Python 3.2 parallel installiert und es gibt gar keine Probleme. Man muss nur bei allem python3 statt python schreiben.

Von daher sehe ich kein Problem, direkt Python 3 zu lernen. Irgendwann muss er sich sowieso wieder umstellen.
BlackJack

@Hellstorm: Also ich habe kein soo altes System und Python 3.2 über die Paketverwaltung installiert, aber die bietet mir auch nur virtualenv für Python 2.

Wenn sich Python 3 nicht durchsetzt, wäre ich auch nicht supertraurig. Für mich persönlich stehen Aufwand und Gewinn einer Umstellung bei weitem in keinem sinnvollen Verhältnis.
Dodger
User
Beiträge: 3
Registriert: Montag 12. September 2005, 19:37

Hiho,

sooo, hab´s endlich geschafft. Wie von BlackJack vermutet hatte ich bei der Trennung zum System-Python nicht aufgepasst und er hat noch python2-Sachen gezogen, wenn man es richtig macht funktioniert es auch :)

Ich mache meine Basteleien auf einem VServer, und bin deswegen an Debian6 gebunden... und ja, zwischenzeitlich hab ich mir auch schon überlegt ob das mit Python3 so ne gute Idee war, viele der Testsnippets die man sich ergoogelt sind halt für Python2 und ich hab mehr als einmal meine liebe Not gehabt das auf Python3 ans laufen zu kriegen, gerade wenn es um so Sachen wie urllib, htmllib etc. ging...
Aber egal, sind nur Geh-Versuche und ich vermute das die Zukunft langfristig schon Richtung python3 anstatt python2 geht, so brauch ich mich später nicht mehr umgewönen :)

Falls es jemanden interessiert, so kann ich jetzt auch auf nem alten Debian mit python3.3 & virtualenv gefahrlos rumspielen:

Code: Alles auswählen

frank@host:~# sudo apt-get install libssl-dev libncurses5-dev ncurses-dev patch
frank@host:~$ wget http://www.python.org/ftp/python/3.3.2/Python-3.3.2.tar.xz && tar -xvJf Python-3.3.2.tar.xz && cd $_
frank@host:~/Python-3.3.2$ ./configure --prefix /opt/python3 --with-ssl && make && make install
frank@host:~/Python-3.3.2$ cd /opt/python3/bin
frank@host:/opt/python3/bin$ wget https://bitbucket.org/pypa/setuptools/raw/bootstrap/ez_setup.py
< Hier im ez_setup.py "--no-check-certificate" zu den WGet-Optionen hinzufügen, vermutlich nicht ganz korrekt, aber funktioniert erstmal>
frank@host:/opt/python3/bin$ ./python3 ez_setup.py
frank@host:/opt/python3/bin$ ./easy_install pip
frank@host:/opt/python3/bin$ ./pip install ipython virtualenv
frank@host:/opt/python3/bin$ ./virtualenv ~/virtualenvironment/testapp
BlackJack

@Dodger: Ich würde jetzt aber dringend prüfen ob das ``make install`` nicht ``/usr/bin/python`` doch durch einen Link auf ``/opt/python3/bin/python3.3`` ersetzt hat und das gegebenenfalls wieder gerade biegen. Normalerweise macht man an der Stelle nämlich ``make altinstall`` um das übersetze Python als Alternative zu installieren.
Dodger
User
Beiträge: 3
Registriert: Montag 12. September 2005, 19:37

Oh ok, wusste ich auch nicht. Aber scheint gutgegangen zu sein:

Code: Alles auswählen

frank@host:~$ which python
/usr/bin/python
frank@host:~$ ls -l /usr/bin/python
lrwxrwxrwx 1 root root 9 21. Okt 10:53 /usr/bin/python -> python2.6
dodger@euve5797:~$
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Ich denke ich hätte Python 3 in Debian 6 einfach aus den Paketquellen installiert.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
Benutzeravatar
diesch
User
Beiträge: 80
Registriert: Dienstag 14. April 2009, 13:36
Wohnort: Brandenburg a.d. Havel
Kontaktdaten:

BlackJack hat geschrieben:@Dodger: Ich würde jetzt aber dringend prüfen ob das ``make install`` nicht ``/usr/bin/python`` doch durch einen Link auf ``/opt/python3/bin/python3.3`` ersetzt hat
Das wäre IMHO schwerwiegender Bug.

Da Dodger ``make install`` aber nicht als root ausgeführt hat, kann da eigentlich selbst dann nichts passieren.
http://www.florian-diesch.de
Benutzeravatar
snafu
User
Beiträge: 6740
Registriert: Donnerstag 21. Februar 2008, 17:31
Wohnort: Gelsenkirchen

BlackJack hat geschrieben:Edit: Man könnte aber auch einfach bei Python 2 bleiben bis sich Python 3 soweit durchgesetzt hat, dass man diese Probleme nicht mehr hat. :-)
Wer weiß. Vielleicht läuft es ja am Ende auf einen Umstieg von 2.7 auf 3.7 hinaus. :o
BlackJack

@diesch: Bei ``/opt`` war ich mir nicht sicher, denn das ist ja normalerweise nicht im $PATH. Da es ein dediziertes `altinstall`-Target im Makefile von CPython gibt für Parallelinstallationen, würde ich halt bei einem ``make install`` auf jeden Fall prüfen ob das vorherige Python noch das Standardpython ist, oder ob man irgendwo einen Link der nur ``python`` heisst, umsetzen oder löschen muss.

@snafu: Glaube ich nicht. Es sei denn Python 3 schafft die Hürde zum Standardpython bei den Linux-Distributionen nicht weil sich keiner findet der die systemrelevanten Skripte portiert. Falls es irgendwann daran hängen sollte, würde ich die PSF in der Pflicht sehen etwas zu unternehmen. Das wird schon. Dauert halt.
Benutzeravatar
snafu
User
Beiträge: 6740
Registriert: Donnerstag 21. Februar 2008, 17:31
Wohnort: Gelsenkirchen

BlackJack hat geschrieben:@snafu: Glaube ich nicht. Es sei denn Python 3 schafft die Hürde zum Standardpython bei den Linux-Distributionen nicht weil sich keiner findet der die systemrelevanten Skripte portiert. Falls es irgendwann daran hängen sollte, würde ich die PSF in der Pflicht sehen etwas zu unternehmen. Das wird schon. Dauert halt.
War auch nur so halb ernst gemeint. ;)
Antworten