Установка зависимостей локальной зависимости с помощью pipenv

Фон

У нас есть проект со следующей структурой каталогов высокого уровня *

./datascience/
├── core
│   └── setup.py
├── notebooks
│   └── Pipfile
└── web
    └── Pipfile

* Исключены все не относящиеся к делу файлы и каталоги для краткости.

core Пакет представляет собой библиотеку. Это зависимость как notebooks а также web Приложения.

core Пакет, будучи библиотекой, имеет свои зависимости, указанные в setup.py

import setuptools

setuptools.setup(
    install_requires=[
        'some-dependency',
        'another-dependency'
    ]
)

web а также notebooks приложения используют pipenv для управления зависимостями. Их зависимости указаны в Pipfile,

Например, вот как web зависимости указаны в web/Pipfile:

[packages]
datascience-core = {path = "./../core"}
flask = "~= 1.0"

Обратите внимание, как core Зависимость - это локальная зависимость, отсюда и относительный путь.

проблема

Делать pipenv install изнутри web или же notebooks каталог, не устанавливает зависимости core библиотека как я и ожидал!

Я также пытался использовать Pipfile за coreв надежде, что pipenv выберет его в своем графике и загрузит все вложенные зависимости. Но это не так.

Как могут зависимости core приложение будет установлено автоматически, когда pipenv устанавливает зависимости для web или же notebooks приложение?

1 ответ

Благодаря этому комментарию нашел решение в теме выпуска pipenv: https://github.com/pypa/pipenv/issues/209

Я продолжил перечислять coreЗависимости в setup.py,

Я изменил web а также notebook приложения для использования редактируемой установки core пакет.
Это было сделано путем запуска следующего в обоих web а также notebooks каталог:

pipenv install --editable ../core

Это произвело это различие

[packages]
- datascience-core = {path = "./../core"}
+ datascience-core = {editable = true,path = "./../core"}

Сейчас работает pipenv install от web а также notebooks каталог приводит к установке core пакет и его зависимости!

Это также решило еще одну очень неприятную проблему, которая заключалась в pipenv install каждый раз происходило изменение core, Теперь он принимает изменения разработки без необходимости переустанавливать локальный пакет!

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