один проект на Python с несколькими пакетами - PullRequest
0 голосов
/ 07 февраля 2019

Я перехожу от одного скрипта к большему приложению Python.

Это приложение с несколькими пакетами.

package1-> package1 / .py files

package2-> package2 / .py files

Поскольку пакет 1 можно использовать отдельно, я храню его в отдельном git-репо.Я бы хотел сделать это в package2: import package1

Кажется, что самый простой способ сделать это - иметь project1 (в git-репозитории) в подкаталоге project2, но это не похоже на хорошее решение.

Некоторые ответы, которые я нашел, кажутся устаревшими, и я не мог заставить их работать.(python setup.py install)

Добавление местоположения package1 в PATH - это решение, но не очень приятно, если я хочу распространить его среди коллег.В идеале я «устанавливаю» пакет как можно проще.

Я бы прочитал «pip», но мне понадобится несколько указаний, с чего начать поиск пакета.Кроме того, распространение будет только локальным.

(python3.6. Код будет использоваться в Linux и Windows.)

1 Ответ

0 голосов
/ 07 февраля 2019

выдержка из превосходного (но отчасти скрытого) ответа с использованием pip, данного np8 в вопросе Импорт модулей из родительской папки : оформить его ответ!

-

1) Добавьте файл setup.py в корневую папку

Содержимое setup.py может быть просто

from setuptools import setup, find_packages

setup(name='myproject', version='1.0', packages=find_packages())

В принципе "любой" файл setup.py будет работать.Это лишь минимальный рабочий пример.

2) Использование виртуальной среды

3) pip установите ваш проект в редактируемом состоянии

Установите пакет верхнего уровня myproject, используяpip.Хитрость заключается в использовании флага -e при установке.Таким образом, он устанавливается в редактируемом состоянии, и все изменения, внесенные в файлы .py, будут автоматически включены в установленный пакет.

В корневом каталоге запустите

pip install -e . (обратите внимание на точку, она обозначает «текущий каталог»)

Вы также можете увидеть, что она установлена ​​с помощьюpip freeze

...