Seite 1 von 2

Debian Lenny, Python 2.6 und Python 2.5

Verfasst: Samstag 2. Januar 2010, 12:36
von Dav1d
Ich habe jetzt auf meinem Laptop (Debian Lenny) Python 2.6.4 installiert, vorher war Python 2.5 installiert (ist es auch immer noch)

Installiert habe ich Py 2.6 so:
1. Downloaden
2. Entpacken
3. ,/configure
4. make -f Makefile
5. sudo make install

Wenn ich jetzt ein Skript mit python test.py starte wird Python 2.6 verwendet, wenn ich es mit ./test.py starte und im Shebang #!usr/bin/python steht wird Python 2.5 verwendet, wenn ich aber im Shebang #!/usr/bin/env python schreibe wird Python 2.6 verwendet, wie kann ich jetzt Python 2.6 auf #!/usr/bin/python legen?

which python sagt mir es ist auf /usr/local/bin/python

Verfasst: Samstag 2. Januar 2010, 13:43
von sma
Ich denke, du willst nicht dein System-Python ersetzen. Kannst du ausschließen, dass du irgendwelche schlecht programmierte Python-Software hast, die nicht mehr funktioniert, wenn sie 2.6 statt 2.5 findet?

Das #!/usr/bin/python ist IMHO schlechter Stil. Benutze lieber den Umweg über /usr/bin/env oder aber benutze zumindest /usr/bin/python2.6 und linke dann (als root) /usr/local/bin/python2.6 nach /usr/bin.

Stefan

Verfasst: Samstag 2. Januar 2010, 14:01
von Dav1d
wenn Debian kein Python benutzt, dann kann ich es ausschließen (fast noch nichts installiert)
Das #!/usr/bin/python ist IMHO schlechter Stil. Benutze lieber den Umweg über /usr/bin/env oder aber benutze zumindest /usr/bin/python2.6 und linke dann (als root) /usr/local/bin/python2.6 nach /usr/bin.
Mit ln?

Verfasst: Samstag 2. Januar 2010, 18:27
von snafu
Debian nutzt an einigen Stellen Python-Skripte. Such halt mal nach `*.py`. :)

Und ja, Linken macht man mit `ln`, üblicherweise `ln -s`.

Verfasst: Sonntag 3. Januar 2010, 13:45
von Dav1d
Die Verknüpfung funktioniert, danke

Verfasst: Sonntag 3. Januar 2010, 13:59
von Leonidas
Ich baue mir unter Debian lieber Backports statt mein System mit irgendwelchen per ``make install`` gebastelten Installationen zu verschmutzen...

Verfasst: Sonntag 3. Januar 2010, 14:08
von Dav1d
So viel Ahnung habe ich unter Linux noch nicht

Verfasst: Sonntag 3. Januar 2010, 14:35
von Leonidas
Gerade das ist dann eben einfacher, weil die Debian-Buildskripte sagen welche Pakete nötig sind um das Paket komplett zu bauen. Mir ists schon oft passiert dass ich Python-Installationen ohne readline oder *dbm hatte oder irgendwas anderes gefehlt hat, weil es zum Kompilationszeitpunkt nicht auf dem System installiert war.

Verfasst: Montag 4. Januar 2010, 09:48
von Rebecca
Mann, wieso benutzt ihr nicht mal die Suchfunktion? Die Frage kam im Dezember mehrere male, und jedesmal wurde aufgezeigt, dass es neben dem Selbercompilieren noch bessere Moeglichkeiten gibt... Die Python2.6-Pakete aus Unstable z.B. sollten sich in Lenny auch problemlos installieren lassen.

Verfasst: Montag 4. Januar 2010, 18:23
von 3ff
@David,
das gleiche Problem hab ich auch gehabt zu Anfang.
1)
Du must (ich habe es so gemacht) in die Shebeen-Zeile schreiben.
#!/usr/bin/python2.6
Genau so und nicht anderes.
Ich rede von dem Pythonscript.
Danach-wenn der Interpreter alles gefressen hat- muss man das script mit chmod 0775
ausfürbar machen und dann mit ./datei.py starten.

2)
Dann -Rebecca hat Recht-
man sollte immer über den Paketmanager (Synaptic oder apt-get bei Ubuntu) seine pakete holen.
Die Pakete sind irgendwie schon "vorbehandelt" das ganze Konfigurieren entfällt.
Man muß natürlich DSL haben. Mit den alten Buschtrommeln - Modems mit 56 k- dauert es halt lang.
Man muß natürlich den Namen des Paketes kennen und da gibts schon mal verdrehte namen.
Es kommt auch vor, das die Spiegelserver bestimmte Pakete nicht archiviert haben.
Dann muß man es halt "zu Fuß" configurieren.
Mir ist es bisher erst 1 mal passiert. meistens werden die fehlenden Pakete oder Libraries beim Interpretieren angemeckert.
Grüße Fritz
:idea:

Verfasst: Montag 4. Januar 2010, 18:45
von Dav1d
zu 1, das ging ja nicht, deswegen hab ich die Verlinkung gemacht -> ln -s

zu 2, ich habe mit apt-cache nach python gesucht, gefunden habe ich pytho2.4, python2.5 und nur python

Code: Alles auswählen

python - An interactive high-level object-oriented language (default version)
mehr nicht, und bevor die Default-Version 2.5 ist hab ichs lieber direkt runtergeladen und dann auch mal selber was kompiliert (hab ich doch, oder?)

Verfasst: Montag 4. Januar 2010, 19:30
von Gabelmensch
Schau dir mal die Readme im Archiv an, es gibt die Moeglichkeit "altinstall".

Verfasst: Dienstag 5. Januar 2010, 01:02
von 3ff
@David
ich befürchte, Du mußt Deine Python-Pakete neu installieren.
1. In UNIX:
whereis python
gibt alle Pfade zurück, wo Python steht.
2.
In Ubuntu gibt es die Möglichkeit python2.6 nachzuinstallieren.
Wenn Dein System nicht zerschossen ist (hoffentlich nicht)
Wird python2.6 sauber configuriert.
Dann steht in:
/usr/bin/python2.6
/usr/local/bin/python2.6
und die Bibliotheken stehen in
/usr/lib/
in /usr/include/ stehen die Dokumente zu 2.6
Gib in der Python-zeile ein:
import sys
print sys.path
Dann muß python2.6 irgendwo auftauchen.
Die scriptfiles müssen dann in der shebeen Zeile auch Python2.6 aufrufen.
Schluß, Fertig gute Nacht.
Grüße Fritz
8) 8)

Verfasst: Dienstag 5. Januar 2010, 09:57
von Rebecca
Ich habe mich oben vertan, es ist nicht Unstable sondern Experimental, welches die Python 2.6-Pakete hat. Ich hole mir die Pakete von dort immer manuell, so bin ich sicher dass ich nicht noch ausversehen andere Dependencies aus Experimental mit reinziehe, und da ich die deb-Dateien schoen aufhebe, kann ich auch immer nachsehen, welche Pakete ich nicht aus dem offiziellen Repo meines Releases habe. Also libpython2.6, python2.6-minimal und python2.6 runterladen und mit dpkg -i bla.deb installieren. (Genau genommen hab ich mir ein eigenes Repo auf der Platte eingerichtet, aber das fuehrt hier ein wenig zu weit :wink:)

Verfasst: Dienstag 5. Januar 2010, 11:40
von Leonidas
@3ff: das heißt übrigens "Shebang" und nicht "Shebeen" denn "!" ist eher "bang" als "been".

Verfasst: Dienstag 5. Januar 2010, 15:32
von Dav1d
@gabelmensch, danke, allerdings wollte ich ja 2.6 als MainInstallation haben und nicht Python 2.5

Wieso muss ich meine Pythonpakete neu installieren?
das mit whereis wusste ich, tut doch aber nichts zur Sache, oder?
was hat import sys#; print sys.path für einen Sinn, dann ist ja Python 2.6 schon gestartet

Ich hab die stable ;), wenn ich die experimental hätte könnte ich Python2.6 per apt-get installieren?

Verfasst: Dienstag 5. Januar 2010, 16:01
von Leonidas
Wie Rebecca sagte, kannst du angeblich die Expreimental-Pakete in Stable direkt instalieren.

Ich mache das aber so, dass ich mir die Pakete lokal als Backports baue und installiere.

Verfasst: Dienstag 5. Januar 2010, 16:17
von Rebecca
Dav1d hat geschrieben:@gabelmensch, danke, allerdings wollte ich ja 2.6 als MainInstallation
Das ist, wie schon gesagt wurde, keine gute Idee, da zu viele grundlegende Debian-Pakete von 2.5 abhaengen, und du nicht vorhersagen kannst, was ein Umstieg auf 2.6 an deinem System alles kaputtmachen kann. Wo ist auch das Problem, bei deinen Programmen, die Python 2.6 brauchen, dies explizit anzugeben?

shebeen

Verfasst: Mittwoch 6. Januar 2010, 06:28
von 3ff
shebeen ist ein keltisches Wort und wird in irland benutzt für schwarzgebrannten Schnaps.
Bleib Du bei shebang ich bleib bei shebeen.
Es ist immer die 1. Zeile in einem Unix-Scriptfile und bei Python muß es so lauten:
#!/usr/bin/python2.6 oder andere Versionen.
Bei mir funltioniert es so nicht
#!/usr/bin/env python
dann kommt die Fehlermeldung: Bad Intetpreter.
Vielleicht ist mein env nicht vollständig.
Da wir hier nicht bei desperate housewifes sind, wollen wir es dabei belassen.
Grüße Fritz

8) 8)

Verfasst: Mittwoch 6. Januar 2010, 12:04
von Dav1d
bei mir hat #!/usr/bin/env python funktioniert und #!/usr/bin/python2.6 läuft jetzt auch, dank dem Link auf /usr/local/bin/python