#!/usr/bin/env python

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.
Antworten
Nobuddy
User
Beiträge: 1023
Registriert: Montag 30. Januar 2012, 16:38

Hallo zusammen,

zu:

Code: Alles auswählen

#!/usr/bin/env python
habe ich Fragen.
Ich nutze Python unter Kubuntu 12.04, dort gibt es aber den Pfad '/usr/bin/env' nicht, sondern nur '/usr/bin/'.
Meine Python-Programme funktionieren aber trotzdem.
Könnte mir jemand das kurz erklären?

Unter '/usr/bin/' habe ich:
- python
- python2
- python3
- python3.2

Wird bei

Code: Alles auswählen

#!/usr/bin/env python
automatisch, die höchste Python-Version verwendet, oder muß ich die speziell angeben?
Etwa so:

Code: Alles auswählen

#!/usr/bin/env python3.2
Grüße Nobuddy
anogayales
User
Beiträge: 456
Registriert: Mittwoch 15. April 2009, 14:11

Hallo Nobuddy,

probier es doch einfach aus! Du kommt mittels

Code: Alles auswählen

import sys
print(sys.version)
an die jeweilige Versionsinformation. Welche python Version letztendlich ausgewählt wird hängt stark von deinem verwendeten System ab. Normalerweise gibt es einen symbolischen Link im Verzeichnis /usr/bin/ auf die jeweilige python Version.

Grüße,
anogayales
BlackJack

@Nobuddy: ``/usr/bin/env`` gibt es ganz bestimmt, das ist aber nicht, wie Du vielleicht vermutest ein Verzeichnis sondern ein Programm: http://man.cx/env
Nobuddy
User
Beiträge: 1023
Registriert: Montag 30. Januar 2012, 16:38

Ok, Danke für Eure Antworten!
Bei

Code: Alles auswählen

    import sys
    print(sys.version)
habe ich die Version 3.2, also die Aktuellste auf meinem System.

Das Programm env, gibt dann wohl die aktuell installierte Programmversion auf dem Betriebssystem zum Starten frei!?
BlackJack

@Nobuddy: Das startet einfach das Programm welches danach angegeben wird. Man muss dann keinen konkreten Pfad angeben weil das Programm in den Pfaden gesucht wird, die in der Umgebungsvariablen $PATH stehen. Also genau so als würde man ``python`` direkt in einer Shell eingeben. Das ist portabler als zum Beispiel ``#!/usr/bin/python`` zu schreiben, weil nicht bei jedem System das Python-Programm genau an der Stelle liegen muss. Aber jedes Linux hat ein ``/usr/bin/env``-Programm.

Auf einem Kubuntu 12.04 solltest Du bei ``#!/usr/bin/env python`` übrigens kein 3.2 bekommen.
Hellstorm
User
Beiträge: 231
Registriert: Samstag 22. Juni 2013, 15:01

Man muss sich meistens zwischen python (bzw. python2) und python3 entscheiden. Wenn du mal mit ls -l in /usr/bin suchst, dann siehst du haufenweise symbolische Verknüpfungen. Wenn man python3 eintippt, kriegt man also automatisch die aktuellste Python-3-Version, bei python bzw. python2 automatisch die aktuellste Python-2-Version.

Python 2 und 3 laufen im Paketmanager parallel, d.h. Python 3 ersetzt Python 2 nicht. Umgekehrt ersetzt Python 3.4 aber z.B. Python 3.3.
Antworten