Почему вторая строка скрипта Python влияет на то, как pip его устанавливает? - PullRequest
0 голосов
/ 04 мая 2018

Проблема : pip3 install и setuptools неожиданно обкрадывает строку сценариев оболочки shebang. Я пытаюсь понять, как это работает и как это контролировать.

Что происходит : В macOS 10.13 я использую Python 3.5, установленный macports . Я разработал пакеты Python 3, которые в настоящее время могут быть установлены с помощью следующей простой процедуры:

git clone https://github.com/project/mypackage.git
cd mypackage
sudo pip3 install .

setup.py для пакетов содержит следующее:

scripts = ['bin/somescript'],

Каждый такой скрипт имеет следующую первую строку:

#!/usr/bin/env python3

Сегодня я обнаружил, что pip3 манипулирует строкой Шебанга во время установки таким образом, что зависит от второй строки скрипта . В частности, если запуск моего скрипта выглядит следующим образом,

#!/usr/bin/env python3
#
# some comments here

затем pip3 install заменяет первую строку на #!/usr/bin/X11/python3, что в моей системе совершенно неверно. Однако, если начало моего скрипта выглядит так:

#!/usr/bin/env python3
# some comments here

pip3 install заменяет линию Шебанга на другой (на этот раз правильный) путь, #!/opt/local/bin/python3.

Мои вопросы : По сути, почему это происходит ?

  1. Почему вторая строка скрипта меняет поведение?
  2. Как pip3 install выбрать, какой интерпретатор он использует?
  3. Почему он пытается использовать /usr/bin/X11/python3 (которого нет в моей системе)?
  4. Как я могу изменить поведение или вообще прекратить жечь?
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...