@leonidpetrosian

Как работает шебанг и итерпретатор Python?

Всем доброго!
Прошу объяснить одну очень глупую, но не дающую мне покоя "заковырку".

При создании любого проекта под Python считается хорошим тоном создать виртуальную среду под него.
$ python3 -m venv env

Активируя среду интерпретатор Python "переезжает" в папку env, в чем можно легко убедится
$ which python3
users/username/project/env/bin/python3

Чтобы не прописывать каждый раз интерпретатор в терминале, в шебанге мы прописываем путь к нему.

НО почему тогда
#!/env/bin/python
print('Hello World!')

а не
#!users/username/project/env/bin/python3
print('Hello World!')

P.S.:
И если на то уж пошло, можно ли в шебанге прописывать не полный путь к интерпретатору, а лишь относительно рабочего каталога? Что-то типа:
#! ~/env/bin/python3
print('Hello World!')
  • Вопрос задан
  • 254 просмотра
Пригласить эксперта
Ответы на вопрос 1
saboteur_kiev
@saboteur_kiev Куратор тега Python
software engineer
/usr/bin/env это команда, которая найдет правильный бинарник. Потому что не во всех случаях, у вас питон лежит в /usr/bin, не во всех случаях у вас bash лежит в /usr/bin

Это просто больше стабильности для скриптов которые могут запустить на ембеддед линуксе, в виндовс cygwin и других окружениях
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы