Когда имеет смысл использовать публичный пакет в качестве субмодуля в Python против установки с помощью pip? - PullRequest
0 голосов
/ 12 января 2019

Я работаю над проектом на python, который имеет много открытых источников зависимостей, которые могут не поддерживаться регулярно. Я попытался использовать пакеты в качестве подмодулей, добавив их с помощью Git; но затем я получаю сообщение об ошибке, говорящее, что нужный мне модуль недоступен, когда я пытаюсь использовать субмодуль; когда я устанавливаю пакет с pip, он работает нормально. Это не произошло с каждой посылкой. Мне интересно, почему я не могу использовать субмодуль, как если бы я установил пакет, просто импортировав его?

(Модули, похоже, отсутствуют в импорте субмодуля по сравнению с импортом установленного пакета pip.)

Однако лучше ли использовать эти пакеты в качестве подмодулей или просто добавить требуемый пакет и номер версии в файл require.txt, который будет установлен для производственного развертывания?

(Любые дополнительные функции, необходимые для подмодуля или пакета, добавляются с помощью оболочки)

Ответы [ 2 ]

0 голосов
/ 12 января 2019

git - инструмент разработки; Вы используете это во время разработки, но не развертывания. pip - инструмент развертывания; в процессе разработки вы используете его для установки необходимых библиотек; во время развертывания ваши пользователи используют его для установки вашего пакета с зависимостями.

Используйте субмодули, когда вам нужно что-то из удаленного репозитория в вашей среде разработки. Например, если указанный удаленный репозиторий содержит Makefile (s) или другие файлы, отличные от Python, которые вам нужны и которые обычно не устанавливаются с pip.

Для всего остального pip предпочтительнее.

0 голосов
/ 12 января 2019

Я предполагаю, что ваша проблема в том, что git помещает подмодуль рядом с вашим проектом, и проблема python "не может импортировать выше верхнего уровня" применима там. В любом случае, вам не нужен субмодуль в git-смысле, вы хотите, чтобы модуль устанавливался в пакеты сайтов для вашей среды python / virtual env.

Я бы остановился на использовании pip, поскольку это инструмент, специфичный для python, и имеет больше смысла в качестве рабочего процесса, чем использование подмодуля git для этого использования. Вы также можете указать pip на репозитории git, просто убедитесь, что ключ ssh установлен. Например: pip install --upgrade "git + ssh: // git @ https://repo_url.git@branchname

Кроме того, попробуйте Pipenv, если нет? Он отлично работает при записи манифестов развертывания.

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