Распространение приложения Python Anaconda через RPM

Я разработал приложение Python (в частности, Flask RESTful API, обслуживаемый gunicorn) в среде Anaconda. Приложение было разработано на Anaconda, потому что это то, что находится на моей собственной (Windows 10) машине, но я пытался придерживаться Anaconda (или, на самом деле, conda) из-за сильной зависимости приложения от pandas, NumPy и SciPy. Я единственный программист Python в команде, которая работает в основном на Java, что сбивает с толку моих товарищей по команде, а для распространения (в наших кластерах AWS и, возможно, где-то еще) мой босс хочет, чтобы я завершил все красивым поклоном RPM.

Прошлую неделю я выдергивал волосы, пытаясь понять, как это сделать. Я многому научился, но все еще довольно потерян. Вот мои текущие соображения в виде маркированного списка:

  • Мне не остро нужно создавать исполняемый файл вместо сценария Python: у меня есть 4 сценария точки входа, что делает проблематичным развертывание одного файла (я знаю, что могу создать один сценарий, который вызывает каждый из других , но у меня есть дела поважнее, и в любом случае некоторые сценарии будут запускаться другими пользователями, чем другие), и я не вижу особого смысла, кроме эстетического, в преобразовании точек входа в исполняемые файлы. В любом случае, я не уверен, что знаю, как заставить PyInstaller и т.п. работать как с conda, так и с RPM.
  • Использование setuptools с аргументом bdist_rpm кажется простым решением, но я с подозрением отношусь ко всему, что использует pip, а не conda для установки, из-за проблем pip с зависимостями, отличными от Python. Я понимаю, что pip в Linux, вероятно, не упадет так сильно, как pip в Windows, но я все еще не доверяю pip (должен ли я в этом случае?). Возможно, если я распространяю копии всей среды, включая пакеты, обработка зависимостей будет проще, но в своих исследованиях я не видел ничего, что могло бы сказать мне, правда это или нет.
  • Похоже, я мог бы что-нибудь взломать вместе с RPM или Make, но я не уверен, что знаю, как это сделать.

Я был бы рад получить любой совет о том, как лучше всего действовать.

pip отлично работает в Windows, почти так же, как в Linux. Почему вы на самом деле беспокоитесь об этом? Это довольно зрелая программа. Кроме того, conda разработана специально для взаимодействия с pip. Это не испортит вашу среду.

Mad Physicist 31.03.2018 06:09

Я постоянно использую сочетание conda и pip как в Linux, так и в Windows. Я обычно использую conda для больших вещей, таких как numpy и scipy, которые мне всегда нужны в моих репозиториях, а остальное делаю через pip.

Mad Physicist 31.03.2018 06:13

Если вы правильно укажете свои зависимости, я не ожидаю, что у вас возникнут какие-либо проблемы.

Mad Physicist 31.03.2018 06:15

Вы пробовали pyp2rpm?

msuchy 31.03.2018 21:04

Я не видел этого - спасибо. Однако не похоже, что есть какой-либо способ интегрировать его с conda, и я даже не уверен, какое преимущество он дает мне по сравнению с инструментами настройки.

MTKnife 31.03.2018 23:33
Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
0
5
202
0

Другие вопросы по теме