однако есть некоторые вещи, которыми я поделюсь. Например, если я балуюсь искусственным интеллектом (у меня может быть около 30 совершенно несвязанных между собой программ), но все они будут обращаться к LLM.
Структура каталогов
Итак, структура каталогов, которую я всегда хочу использовать в Git, такая:
Код: Выделить всё
.
└── src/
├── common
├── program1
├── program2
└── program3
но я не нашел хорошего способа сделать ссылки на program1, program2, program3 общими, чтобы любой ide или линтер поймут это прямо из git. Я знаю, что могу делать такие вещи, как установка путей Python и т. д., но я хочу, чтобы кто-то мог просто клонировать библиотеку - перейти на программу1 и запустить python program1.py, и это просто работает - поэтому все, что требует запуска/настройки/настройки чего-либо, является просто для меня это не вариант.
Требуется: относительный импорт
Что я действительно хочу, так это чтобы каждая программа просто делала:
Код: Выделить всё
from ..common import some_helper
Код: Выделить всё
Error: attempted relative import with no known parent package
Код: Выделить всё
import sys
import os
parent_dir = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
sys.path.insert(0, parent_dir)
Эти программы на самом деле не имеют ничего общего друг с другом, кроме того, что они являются частью одного репозитория, поэтому любое общее происхождение было бы совершенно неправильным. У них также обычно есть куча других файлов, файлов данных, файлов readme и т. д., поэтому просто помещать все в один и тот же каталог выше общего — слишком беспорядок.
Альтернатива, которую я пробовал: символические ссылки
Единственное действительно практичное решение, которое я нашел до сих пор, — это просто связать общий каталог со всеми остальными каталогами символическими ссылками — это некрасиво, но работает.
Вопрос
Есть ли лучший способ — более питонический способ?
Думаю, по сути — я хочу знать, как выполнить относительный импорт без известный родительский пакет?
Подробнее здесь: https://stackoverflow.com/questions/787 ... grams-in-a