Исполняемый скрипт, установленный из pip, использует неправильный путь Python

Я пытаюсь упаковать один из своих проектов с помощью setuptools. В этом проекте развертывается исполняемый сценарий, настроенный в "setup.py":

scripts=['bin/check_mailq.py'],

Первая строка файла check_mailq.py:

#!/usr/bin/env python

Если я выполняю «setup.py install», первая строка заменяется на путь Python к машине / virtualenv. Кстати, если я упакую проект для pypi с помощью команды:

python setup.py bdist_egg bdist_wheel upload

а затем установите его с помощью pip на моем производственном компьютере, путь python неверен.

#!/home/kbyte/pynagmailplugins/venv/bin/python

вместо (пример):

#!/opt/production_venv/bin/python

Что случилось?


person Kbyte    schedule 27.07.2015    source источник


Ответы (1)


Distutils изменяет строку shebang на путь к питону, который вы используете для запуска distutils, так что это ожидаемое поведение. Я считаю, что это настроено таким образом, чтобы все зависимости библиотеки, необходимые для вашего скрипта, были в одной версии Python.

Если pip вызывает проблему, вероятно, он был установлен в другом виртуальном сервере / с другим питоном.

FWIW, вы можете запустить: python setup.py build --executable = "/ usr / bin / env python", чтобы вручную сохранить shebang как есть.

См. Также: Не трогайте мой shebang!, https://github.com/hpcugent/vsc-mympirun-scoop/issues/7

person lemonhead    schedule 27.07.2015
comment
Отлично, параметр --executable - это ответ. Кстати, я поставил --executable="python", потому что / usr / bin / env python недостаточно. Спасибо! - person Kbyte; 30.07.2015