Как разрешить нескольким проектам Python использовать пакеты друг друга?

#python #module #export #pythonpath

#python #модуль #экспорт #pythonpath

Вопрос:

У меня ситуация, когда у меня есть три проекта Python, каждый со своими собственными репозиториями, и каждый с файлами конфигурации, такими как .файл pylintrc в их корне.

 Project A
- .pylintrc
- .git
- src/
-- __init__.py
-- hello.py

Project B
- .pylintrc
- .git
- src/
-- __init__.py
-- there.py

Project C
- .pylintrc
- .git
- src/
-- __init__.py
-- general_kenobi.py
 

Я хотел бы иметь возможность использовать пакеты и модули из любого из проектов. Так, например, в ProjectA/src/hello.py Я хотел бы иметь возможность делать

 import ProjectB.src.there
 

Возможно ли это?
Я потратил все утро, пытаясь поместить pylintrc во вложенную папку с именем PROJECT.
В настоящее время моя переменная PYTHONPATH выглядит следующим образом:

 /Documents/Sites/PROJECT:/Documents/Sites/PROJECT/ProjectA:/Documents/Sites/PROJECT/ProjectB
 

Однако я не могу заставить это работать. Важно хранить репозитории отдельно, но это, похоже, делает невозможным такой импорт.

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

Комментарии:

1. создайте файл колеса для всех этих проектов или создайте пакет python для всех этих 3

2. Спасибо — теперь читаю о файлах wheel

3. Я предполагаю, что у вас есть более одного файла в каждом проекте. Вы также импортируете файлы из одного проекта? Ответ на этот вопрос довольно важен. Если да, то с вашей текущей структурой каталогов все может стать очень запутанным, особенно если какой-либо из ваших модулей содержит глобальные переменные. Затем я бы предложил изменить структуру каталогов.

4. еще один вопрос: используете ли вы virtualenv или любой аналогичный инструмент, позволяющий настраивать собственный модуль python для каждого проекта? Если да, то вы можете подумать о преобразовании каждого проекта в модуль python (слегка изменив структуру каталогов и предоставив setup.py ) Затем вы могли pip install -e бы поместить каждый модуль в общий virtualenv

5. Привет @gelonida, спасибо за ваши ответы. Да, есть импорт файлов в рамках одного проекта. Я думаю, что лучшее, что я могу сделать, это разделить репозитории и установить их с помощью conda (my env manager), как вы предложили в своем втором комментарии. Большое спасибо.