`which python` указывает на нужный мне питон, но`python` запускает неправильную версию

Я хочу использовать python24, предоставляемый портами, поэтому я установил его и python_select -s показывает, что версия, которую я хочу, действительно выбрана. Бег which python дает /opt/local/bin/pythonи работает /opt/local/bin/python дает мне версию, которую я хочу. Однако когда я бегу python из скорлупы я получаю /usr/bin/python версия вместо. У меня нет псевдонима Python.

Вот ситуация в двух словах:

  1. Я считаю, что путь установлен разумно, и which python Кажется, чтобы подтвердить это.
  2. alias возвращает только 1 запись, что с этим не связано.

Тем не менее, работает python из оболочки Bash дает мне не тот питон!

Я вроде как в тупик! Что я пропускаю?

3 ответа

Решение

Пытаться hash -d python, Это скажет bash забыть, где он в последний раз видел исполняемый файл python.

Возможно, вы только что обновили что-то, и ваш экземпляр bash содержит устаревшую информацию об исполняемых файлах. Пытаться exec bash,

Когда я:

  1. Начните qqq (/usr/bin/qqq) от bash,
  2. Добавьте что-нибудь qqq в /usr/local/bin/,
  3. Попробуй начать qqq снова в том же bash,

Использует уже просмотренную версию (/usr/bin/qqq)

Однако, когда я перезапускаю Bash, он ищет qqq снова и получает /usr/local/bin/qqq,

Другая возможность заключается в том, что сам скрипт указывает, какой исполняемый файл Python должен выполняться в первой строке скрипта. Например, в моей системе установлены Python 2.6 и 2.7, и если первая строка имеет вид:

#!/usr/bin/Python-2.6.8/bin/python

затем я получаю Python 2.6, хотя по умолчанию используется 2.7.

Обычный способ указать значение по умолчанию:

#!/usr/bin/env python
Другие вопросы по тегам