Почему мой путь не по умолчанию использовать Python 2.7 вместо 2.6?

889
fightermagethief

Я использую Google App Engine, но запуск программ из его интерфейса не работает. Журналы в GAE указывают, что он пытается использовать Python 2.6, и ему требуется 2.7, поэтому он не запускается.

Я использовал Python 2.7 до и после ввода pythonс любого пути в терминале, появляется баннер 2.7.

Однако, если я вызову, /usr/bin/pythonя получу баннер 2.6.

Даже если я вхожу /usr/binи печатаю, pythonя получаю баннер 2.7. Мои переменные env упоминают много вещей о 2.7.

Я попытался изменить путь к питону GAE от /usr/bin/pythonк pythonкоторой не работал.

Что мне не хватает?

РЕДАКТИРОВАТЬ:

Кажется, что связанный с пользователем путь заменен общесистемным путем (угадывание).
/etc/pathсодержит только /usr/bin, /bin, /usr/sbin, /sbin, /usr/local/bin(в указанном порядке)

мой путь envсодержит гораздо больше вещей, которые были добавлены с течением времени, но кажется, что самое первое, на что смотрят, это то /etc/path, что имеет приоритет над/usr/bin/env

РЕДАКТИРОВАТЬ:

Корень проблемы оказался в том, что OSX полагается на устаревшие библиотеки Python, которые не устанавливаются в то же место, что и новые установщики Python. Легко испортить вашу систему, используя старые компоненты Python 2.5 и 2.6 в OSX Snow Leopard. Я закончил тем, что связался /usr/bin/pythonс /Library/Frameworks/Python.framework/Versions/2.7/bin/python. Это работает до сих пор, но я мог видеть, что это что-то испортило, так что читайте больше, прежде чем использовать это.

1
Какое это имеет отношение к OS X? В любом случае, что вы изменили, когда пытались это исправить? Что показывает `ls -l / usr / bin / python`? Как насчет `какой питон`? ernie 10 лет назад 1
@ernie: вероятно, сейчас не так уж много общего с osx, но когда он был изначально установлен, он был без установщика и потребовал немного больше усилий, чтобы начать работать. Какой питон = /Library/Frameworks/Python.framework/Versions/2.7/bin/python и ls -l = -rwxr-xr-x 2 корневое колесо 86000 fightermagethief 10 лет назад 0
@bboyreason ls -l / usr / bin / python должен вывести что-то вроде -rwxr-xr-x 1 корневое колесо 9 сент. 14 01:15 / usr / bin / python -> python2.7 если это символическая ссылка, ваша ссылка жесткая (примечание 2) также попробуйте ls -l $ (какой Python) behrooz 10 лет назад 1
@behrooz, который получает lrwxr-xr-x 1 корневой администратор /Library/Frameworks/Python.framework/Versions/2.7/bin/python -> python2 python2 вызывает 2.7 fightermagethief 10 лет назад 0
Я попытался использовать символическую ссылку / usr / bin / python на python, и вызов 'python' по-прежнему вызывает 2.7, но теперь вызов '/ usr / bin / python' или '/ usr / local / bin / python' приводит к ошибке, слишком много уровней символические ссылки fightermagethief 10 лет назад 0
Они связаны друг с другом, попробуйте восстановить то, что вы сделали. Единственное, что может помочь сейчас, это увидеть полный PATH, который видит GAE, если есть какой-либо способ его извлечь. behrooz 10 лет назад 2

2 ответа на вопрос

1
behrooz

In Linux we have this thing called Alternatives system that handles these situations. I'd check if the python binary is a symlink to another python or not, and change it to the one I want if so.
Also check if your PATH contains ".", and if it does, try removing it.

0
Niko

У меня была похожая проблема, и это было потому, что у меня был Cygwin в моей PATHпеременной до установки Python, где находится python.exeфайл.

Обычно проверяйте, можно ли найти python.exeфайл в каталогах, перечисленных в вашей PATHпеременной, перед вашим «фактическим» каталогом установки Python.