Warum verwendet mein Pfad nicht standardmäßig Python 2.7 anstelle von 2.6?

974
fightermagethief

Ich verwende Google App Engine, aber das Starten von Programmen über die Benutzeroberfläche funktioniert nicht. Die Protokolle in GAE zeigen an, dass versucht wird, Python 2.6 zu verwenden, und es ist 2.7 erforderlich, damit es nicht ausgeführt werden kann.

Ich habe Python 2.7 verwendet, und wenn ich pythonvon einem beliebigen Pfad in ein Terminal eingebe, erscheint das 2.7-Banner.

Wenn ich jedoch aufrufe, /usr/bin/pythonbekomme ich das 2.6-Banner.

Selbst wenn ich dabei bin /usr/binund tippe, pythonbekomme ich das 2.7-Banner. Meine env-Variablen erwähnen viel über 2.7.

Ich habe versucht, den Pfad zu Python in GAE von Wechsel /usr/bin/pythonzu pythondenen haben nicht funktioniert .

Was vermisse ich?

BEARBEITEN:

Es scheint, dass der benutzerbezogene Pfad durch den systemweiten Pfad (Raten) ersetzt wird.
/etc/pathenthält nur /usr/bin, /bin, /usr/sbin, /sbin, /usr/local/bin(in dieser Reihenfolge)

Mein Weg unter enventhält viel mehr Dinge, die im Laufe der Zeit hinzugefügt wurden, aber es scheint, dass das erste, was betrachtet wird /etc/path, der ist, der Vorrang hat/usr/bin/env

BEARBEITEN:

Die Wurzel des Problems stellte sich als OSX heraus, das auf veralteten Python-Bibliotheken beruht, die nicht an derselben Stelle wie neue Python-Installationsprogramme installiert werden. Es ist einfach, Ihr System mit dem alten Python 2.5 und 2.6 unter OSX Snow Leopard durcheinander zu bringen. Ich landete die Verknüpfung /usr/bin/pythonzu /Library/Frameworks/Python.framework/Versions/2.7/bin/python. Das funktioniert soweit, aber ich konnte sehen, dass dies etwas durcheinanderbringt, also lesen Sie mehr, bevor Sie dies verwenden.

1
What does this have to do with OS X? In any case, what did you change when you tried to fix it? What does an `ls -l /usr/bin/python` show? How about `which python`? ernie vor 10 Jahren 1
@ernie: probably not much to do with osx now but when it was originally installed it was without installer and took quite a bit more effort to get working. Which python = /Library/Frameworks/Python.framework/Versions/2.7/bin/python and ls -l = -rwxr-xr-x 2 root wheel 86000 fightermagethief vor 10 Jahren 0
@bboyreason ls -l /usr/bin/python should output something like -rwxr-xr-x 1 root wheel 9 Sep 14 01:15 /usr/bin/python -> python2.7 if it's a symlink, yours is a hardlink(note 2) also try ls -l $(which python) behrooz vor 10 Jahren 1
@behrooz that gets lrwxr-xr-x 1 root admin /Library/Frameworks/Python.framework/Versions/2.7/bin/python -> python2 python2 calls 2.7 fightermagethief vor 10 Jahren 0
Ich habe versucht, / usr / bin / python mit Python zu verknüpfen, und der Aufruf von 'python' führt immer noch zu 2,7, aber jetzt führt der Aufruf von '/ usr / bin / python' oder '/ usr / local / bin / python' zu viele Fehler symbolische Links fightermagethief vor 10 Jahren 0
Sie sind symbolisch miteinander verbunden. Versuchen Sie, das wiederherzustellen, was Sie getan haben. Das einzige, was jetzt helfen kann, ist, den vollständigen Pfad zu sehen, den GAE sieht, wenn er trotzdem extrahiert werden muss. behrooz vor 10 Jahren 2

2 Antworten auf die Frage

1
behrooz

In Linux haben wir dieses Ding namens Alternatives System, das diese Situationen handhabt. Ich würde prüfen, ob die Python-Binärdatei ein Symlink zu einem anderen Python ist oder nicht, und es in den gewünschten ändern, falls ja.
Prüfen Sie auch, ob Ihr PATH "." Enthält, und versuchen Sie es zu entfernen.

0
Niko

Ich hatte ein ähnliches Problem und es lag daran, dass ich PATHvor der Python-Installation Cygwin in meiner Variablen hatte, in der sich eine python.exeDatei befindet.

Überprüfen python.exeSie im Allgemeinen, ob sich eine Datei in Verzeichnissen befindet, die in Ihrer PATHVariablen vor dem "tatsächlichen" Python-Installationsverzeichnis aufgeführt sind.