Как структурировать пакет python из нескольких подпроектов? - PullRequest
0 голосов
/ 20 января 2020

Как правильно структурировать пакет python для нескольких функций?

У меня есть случай, когда мой проект можно разбить на 3 совершенно отдельных логических блока, которые полностью отделены друг от друга. Таким образом, я разбил подпроекты на соответствующие папки в моем проекте python. Это привело к такой файловой структуре:

foobartoo
|_setup.py
|_foobartoo
  |_foo
  | |_foo.py
  |
  |_bar
  | |_bar.py
  |
  |_too
    |_too.py

Этот метод объединяет, но хорошо разделяет, но после установки я заметил определенную проблему. Единственный способ получить доступ к одному из файлов - это сделать

from foobartoo.foo.foo import <method/class>

или

import foobartoo.foo.foo as <something>
<something>.<method/class>

Это кажется крайне непрактичным.

Я вижу две альтернативы

  1. удаление системы папок и наличие foo.py, bar.py и too.py в одном каталоге под foobartoo.

Это кажется плохим, потому что невозможно будет узнать, какой файл / код принадлежит какому из проектов

разбиение одного пакета на несколько пакетов.

Это выглядит нормально, но было бы лучше, если бы эти 3 вещи были вместе, поскольку они предназначены для совместного использования.

Я посмотрел на numpy и его исходный код, и каким-то образом они, похоже, имеют много своих функций за многими папками, но им не нужно ссылаться ни на одну из папок. Это кажется идеальным, просто быть в состоянии сделать что-то вроде

import foobartoo

foobartoo.<classname/methodname>()

1 Ответ

0 голосов

Вы можете добавить дополнительные пути к своему «основному» сценарию, чтобы sys автоматически выполнял поиск по многим каталогам, таким как:

import sys 
sys.path.append(example_sub_dir)
import sub_script
sys.path.remove(example_sub_dir)

! Обратите внимание, что вы можете добавить много каталогов в sys для поиска, но вам нужно соблюдать как время импорта будет расти соответственно

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...