Есть ли лучший способ поделиться общим кодом с набором программ Python в репозитории?Python

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Есть ли лучший способ поделиться общим кодом с набором программ Python в репозитории?

Сообщение Anonymous »

Я выбираю Python, когда хочу быстро и легко сделать несколько разных вещей — т. е. у меня всегда получается несколько «программ» Python — например, набор скриптов — или, если я с чем-то играюсь, куча тестовых программ и т. д. - т.е. всегда разрозненная коллекция множества различных программ.
однако есть некоторые вещи, которыми я поделюсь. Например, если я балуюсь искусственным интеллектом (у меня может быть около 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)
большинство вещей на самом деле работает, но это похоже на 4 непонятные строки, которые мне приходится добавлять в каждую программу на Python, а некоторые редакторы или линтеры их не находят.
Эти программы на самом деле не имеют ничего общего друг с другом, кроме того, что они являются частью одного репозитория, поэтому любое общее происхождение было бы совершенно неправильным. У них также обычно есть куча других файлов, файлов данных, файлов readme и т. д., поэтому просто помещать все в один и тот же каталог выше общего — слишком беспорядок.
Альтернатива, которую я пробовал: символические ссылки
Единственное действительно практичное решение, которое я нашел до сих пор, — это просто связать общий каталог со всеми остальными каталогами символическими ссылками — это некрасиво, но работает.
Вопрос
Есть ли лучший способ — более питонический способ?
Думаю, по сути — я хочу знать, как выполнить относительный импорт без известный родительский пакет?

Подробнее здесь: https://stackoverflow.com/questions/787 ... grams-in-a
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Python»