Рейтинг:1

Как использовать pipenv для установки «глобальных» приложений, которые будут запускаться как службы

флаг nc

Кросс-пост из Stack Overflow, так как это, возможно, не по теме.

Я пытаюсь использовать pipenv для распространения приложения Python на сервер (в данном случае это Windows, но у меня аналогичная неопределенность с Linux).

Ранее я сделал следующее:

  1. Установите общесистемный Python
  2. pip установить pipenv

затем установка пайпэнв и пипенв бежать как обычно. Это имеет то преимущество (я думаю), что любой пользователь или действительно пользователь сервиса может выполнять эти команды. Моя цель состоит в том, чтобы приложение Python обычно запускалось как служба (используя nssm в Windows), но в случае сбоя это может быть запущено любым пользователем без необходимости установки pipenv.

Однако официальные документы советуют пользователю устанавливать «избегайте нарушения системных пакетов». pip установить --user pipenv или через пикс. В обоих случаях двоичный файл pipenv оказывается в пользовательской папке, которую необходимо добавить в PATH, если вы не хотите ссылаться на нее, используя полный путь. Мне кажется неправильным иметь службу, указывающую на двоичный файл в моих личных папках, точно так же другим пользователям придется устанавливать свои собственные pipenv или добавлять мои папки в свои пути. Все это кажется очень странным, но, возможно, я что-то упустил. Что-то не так с моим подходом? Существует ли подход «наилучшей практики» к использованию pipenv для развертывания?

Некоторая дальнейшая путаница Я еще немного поэкспериментировал с этим и понял, что даже когда pipenv установлен на системном уровне, «виртуальные envs» создаются на уровне пользователя. Однако я вижу, что это можно изменить с помощью переменной среды, чтобы поместить «virtualenv» внутри проекта. Кроме того, я обнаружил, что в Windows я не могу заставить pipenv работать из службы, поскольку он, похоже, не активирует virtualenv. Вместо этого мне пришлось создать пакетный файл, который активирует virtualenv и выполняет main.py, а затем указывает на это NSSM.

TLDR: Я ищу рабочий процесс развертывания с использованием программного обеспечения pipenv для Python, который будет запускаться как служба *. В идеале я хотел бы, чтобы это не зависело от платформы, чтобы я мог использовать аналогичный рабочий процесс на серверах Windows и Linux.

* В Windows я намерен использовать NSSM для запуска службы, в Linux — systemd. Я доволен этими инструментами, меня смущает pipenv.

Ответить или комментировать

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