orschiro hat geschrieben:Gut, aber dann wird doch der Shebang überhaupt keine Beachtung geschenkt oder verstehe ich das falsch? Ich meine, selbst wenn ich das Script per python manage.py starte, muss er doch registrieren, dass er eigentlich python2.6 verwenden sollte, weil es eben in der Shebang steht.
Du verstehst das Konzept der Shebang nicht:
Gehen wir von diesem Skript aus, nehmen wir an, es steht in ``~`` und ist executable (+x).
Nun bin ich auch in ~ und möchte es ausführen: ``./hallo``. Dann schaut der Kernel ob es ausführbar ist und wenn ja, dann wertet er die erste Zeile aus: ``/usr/bin/python ~/hallo`` wird aufgerufen. Fein, funktioniert auch. Aber wenn ich nun ``ruby hallo' eintippe, dann wird sofort der Ruby-Interpreter gestartet und für den ist die erste Zeile einfach nur ein Kommentar und er führt den nicht kommentierten Code aus.
Heißt also: Shebang wird nur ausgewertet wenn du das Skript als Executable ausführst, wenn du es als Parameter dem Python-Interpreter mitgibst, dann ist es dem herzlich egal ob da etwas drin steht und was da drin steht. Für ihn ist es ein Kommentar.
Also: entweder mit dem richtigen Interpreter aufrufen, oder Shebang entsprechend setzen.
orschiro hat geschrieben:In dem ich also einen Symlink von python2.6 auf python setze richtig?
Nein, falsch. Indem du ``python2.6 /usr/local/bin/django-admin.py`` und ``python2.6 manage.py`` ausführst. Wie du siehst, übergebe ich in beiden Fällen die auszuführende Datei als Parameter und somit ist es dem Interpreter total egal was im Shebang steht, daher ist es egal ob da jetzt ``#!/usr/bin/env python`` oder ``#!/usr/bin/env python2.6`` drin steht. Aber _nur_ in diesem Fall. Wenn du ``django-admin.py`` und ``./manage.py`` ausführst, dann wird Shebang ausgewertet und muss dementsprechend auch stimmen.