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