Как операционная система находит исполняемый файл Python при запуске из командной строки?

Ответ

Операционная система находит исполняемый файл Python с помощью системной переменной окружения PATH.

PATH — это список путей к каталогам, в которых система ищет исполняемые файлы. Когда вы вводите команду python или python3, оболочка (shell) последовательно проверяет каждый каталог из PATH на наличие файла с таким именем.

Процесс поиска:

  1. Пользователь вводит команду python3 script.py.
  2. Оболочка получает список каталогов из переменной PATH (например, /usr/local/bin:/usr/bin:/bin).
  3. Система ищет файл python3 сначала в /usr/local/bin, затем в /usr/bin и так далее.
  4. Первый найденный исполняемый файл используется для выполнения команды.

Практические команды:

  • Узнать, где находится исполняемый файл Python:

    # Для Linux / macOS
    which python3
    
    # Для Windows
    where python
  • Посмотреть содержимое переменной PATH:

    # Для Linux / macOS
    echo $PATH
    
    # Для Windows
    echo %PATH%
  • Узнать путь к интерпретатору из самого Python:

    import sys
    print(sys.executable)

Ответ 18+ 🔞

А, ну вот, слушай, смотри, как это всё работает, блядь. Ты пишешь в консоли python3 script.py, и система, эта хитрая жопа, начинает искать, где же этот самый python3 притаился.

А ищет она его по специальному списку, который называется PATH. Это типа как список адресов, где могут жить исполняемые файлы. Система берёт этот список и тупо, как мартышка, начинает шарить по каждому адресу по порядку: "Тут есть python3? Нет? Ну похуй, иду дальше".

Как это выглядит на практике, ёпта:

  1. Ты пишешь команду.
  2. Система смотрит в PATH (допустим, там /usr/local/bin:/usr/bin:/bin).
  3. Сначала лезет в /usr/local/bin — нету там питона? Ну хуй с ним.
  4. Потом в /usr/bin — о, сука, нашла! Вот он, пиздопроебибна! И сразу запускает.

А вот тебе команды, чтобы не быть полным идиотом и самому всё проверить:

  • Чтобы узнать, где конкретно лежит твой питон, который сейчас сработает:

    # На Линуксе или Маке
    which python3
    
    # На Винде (ну там, где всё через жопу)
    where python
  • Чтобы посмотреть сам этот волшебный список PATH и понять, куда система вообще смотрит:

    # Линукс/Мак
    echo $PATH
    
    # Винда
    echo %PATH%
  • А можно и из самого питона спросить: "Слышь, мудила, а где ты вообще живёшь?"

    import sys
    print(sys.executable)

    Вот этот код не трогай, он правильный.

Вот и вся магия, блядь. Никакой хуйни, просто система тупо ищет по списку, пока не наткнётся. А если не находит — ну, пиши пропало, значит, ты такой же распиздяй, как и я, и не установил его нормально.