У меня растет число сценариев, которые составляют программу, которую я пишу, и решил, что пришло время очистить дерево исходных текстов и правильно их упаковать.Я уверен, что это простой вопрос, но я не могу выяснить, как это сделать.
Если у меня есть группа модулей, которые подходят друг другу, но один должен быть модулем верхнего уровня идругие должны начинаться с префикса именем модуля, но на самом деле идти в пакеты более низкого уровня, как я могу это сделать.
Например, скажем, я хотел иметь возможность import mystuff
и получить все мои вещи.но я также должен быть в состоянии import mystuff.test.test1
.Я думал, что создам исходное дерево, например,
myprogram/
mystuff.py
mystuff/
__init__.py
tests/
__init__.py
test1.py
test2.py
...
Но в этом случае кажется, что mystuff/
всегда имеет приоритет над mystuff.py
, поэтому import mystuff
ничего не делает (до тех пор, пока mystuff/
's __init__.py
пусто).
Каков будет правильный подход для получения желаемого поведения?Или это невозможно, и я должен переместиться mystuff.py
в mystuff/
и получить к нему доступ как mystuff.mystuff
(кажется, это ненужное повторение).
Извините, если я только что пропустил что-то очевидное.Я предполагаю, что это должно быть задокументировано где-то, но я не могу найти, где-то где-то.
Обновление. Хотя я считаю, что метод Игнасио правильный, мне не очень нравитсяЭто!Если в моем редакторе открыто несколько файлов, и все они называются __init__.py
, все может стать грязным.Итак, я решил оставить свою структуру такой, какая она есть, и связать mystuff.py
с mystuff/__init__.py
.Если у кого-то есть мнение о том, почему я не должен этого делать, я бы хотел их услышать.
На самом деле, в конце концов, я делаю ссылки наоборот, так как я не смог найти способ сделать символические ссылки разыменования distutils при создании tar.gz
, и в результате я получил неработающие ссылки вмой вывод.Этот способ имеет тот же эффект и сохраняет его счастливым.