лучшие практики для установки приложений Python на целевые каталоги - PullRequest
0 голосов
/ 23 июня 2019

Я ищу способ установки приложения Python на целевую систему вместе с ее зависимостями (при необходимости).

Исходный код в настоящее время находится в репозитории github.

Целевое приложение должно находиться в отдельном каталоге, чтобы иметь собственную среду (но я открыт, чтобы выслушать любые аргументы против этого);его можно вызвать, вызвав скрипт в каталоге bin/ по целевому пути.

My setup.py содержит:

install_requires=['paho-mqtt'], 
scripts = ["bin/mylauncher"],

, где mylauncher выглядит следующим образом:

#!/bin/bash
DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" >/dev/null 2>&1 && pwd )"

echo "MY APPLICATION is installed under ${DIR}"
export PYTHONPATH=${DIR}/..
python3 ${DIR}/../mymainscript.py "$@"

Мне кажется, что следующее очень хорошо мне подходит:

pip install \
    https://github.com/<user>/<package>/archive/<commitish>.zip#\
    egg=<package>&\
    subdirectory=<path/to/setup.py>
    --target /opt/mypackage

Итак, я получаю

+ opt
    + myypackage
        + bin
            mylauncher
        + mypackage-x.y.z.dist-info
            ...
        + paho
            ...
        + paho_mqtt-1.4.0.dist-info
            ...
        mymainscript.py

И я могу вызвать приложение с помощью /opt/mypackage/bin/mylauncher.Итак, два вопроса:

1) Является ли приведенная выше схема установки (и сценарий запуска) приемлемой или связана с ошибкой?Мне не нравится возвращаться к вышеописанному взлому для запуска.

Я также не понимаю, каково было первоначальное намерение --target.

2) Можно ли разрешить pip install NOT переустановить paho-mqtt в подкаталоге, если он уже установлен для всей системы?

Например, если яиспользуйте --root=/opt/mypackage вместо --target, он находит его уже удовлетворенным:

Requirement already satisfied: paho-mqtt in /usr/local/lib/python3.5/dist-packages (from mypackage) (1.4.0)

Однако эффект в этом случае совершенно другой, в результате чего у меня теперь есть /opt/mypackage/usr/local/bin/mylauncher и /opt/mypackage/usr/local/lib/python3.5/dist-packages/mymainscript.py

Я нашел похожий вопрос , но без ответа.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...