Подтвердить что ты не робот

Как я могу сделать setuptools (или распространять) установку пакета из локальной файловой системы

Можно ли указать (редактируемые) исходные зависимости в setup.py, которые, как известно, находятся в локальной файловой системе?

Рассмотрим следующую структуру каталогов, все из которых находятся в одном репозитории VCS:

projects
  utils
    setup.py
    ...
  app1
     setup.py
     ... # app1 files depend on ../utils
  app2
     setup.py
     ... # app2 files depend on ../utils

Учитывая следующие команды:

cd projects
mkvirtualenv app1
pip install -e app1

Я хотел бы иметь все зависимости для установленного приложения 1, включая "utils", который является "редактируемой" зависимостью. Аналогично, если бы я сделал то же самое для app2.

Я пробовал играть со всеми комбинациями file://... URL-адресов в install_requires и dependency_links безрезультатно. Я бы хотел использовать URL-адрес ссылки зависимостей, например src+file://../utils, которая сообщила бы setuptools, что источник для пакета находится в файловой системе на этом относительном пути. Есть ли способ сделать это?

4b9b3361

Ответ 1

У меня была идентичная проблема, когда мне нужно было зависеть от модулей в папке для сиблинга. Я смог найти решение после спотыкания https://caremad.io/2013/07/setup-vs-requirement/

Я закончил файл requirements.txt, чтобы обратиться к файлу, который я хотел, и затем установить все с помощью

pip install -r requirements.txt

requirements.txt

-e ../utils                                                                                                                                                                    
-e .

И setup.py имеет все мои другие зависимости, включая utils. Когда pip пытается установить сам app1, он понимает, что зависимость utils уже заполнена и, таким образом, проходит через нее при установке других требований.

Ответ 2

Когда я хочу работать с набором взаимосвязанных проектов, я устанавливаю их все с помощью /setup.py develop.

Если я ошибочно или поздно захочу сделать модуль, доступный для модуля, доступным для редактирования, я клонирую его и сделаю python setup.py develop на нем, заменив существующий.

Чтобы убедиться, я удаляю ссылку в виртуальных сайтах-пакетах и ​​самом пакете.