Структура папки пакета Python - PullRequest
0 голосов
/ 31 января 2019

Я исследовал, как построить структуру папок для пользовательского пакета Python.Было несколько попыток, но ни одна из них не была применима вообщеВ частности, использование (или не использование) файла (ов) __init__.py.

У меня есть пакет, состоящий из нескольких подпакетов, каждый из которых отвечает за анализ файлов определенного типа.Поэтому в настоящее время я принял следующую структуру:

Parsers/
├── __init__.py
|
├── ExternalPackages
│   ├── __init__.py
│   ├── package1
│   └── package2
|
├── FileType1_Parsers/
│   ├── __init__.py
│   ├── parsers1.py
│   └── containers1.py
│   
└── FileType2_Parsers/
    ├── __init__.py
    ├── parsers2.py
    └── containers2.py

Но, кажется, не очень питонно, что когда я импортирую его пакет и хочу использовать определенный класс модуля, я должен напечатать что-то вроде

from Parsers.FileType1_Parsers.parsers1 import example_class

Есть ли соглашение о том, как структурировать такие пакеты, или какие-либо правила о том, как избежать таких длинных строк импорта?

Ответы [ 2 ]

0 голосов
/ 31 января 2019

Вы можете добавить следующую строку к Parsers/__init__.py

from .FileType1_Parsers.parsers1 import example_class

Затем вы можете импортировать example_class с помощью

from Parsers import example_class

Это обычная практика для больших пакетов.

0 голосов
/ 31 января 2019

Вы можете изменить sys.path во время выполнения, чтобы он содержал каталог для каждого модуля, который вы будете использовать.Например, для package1 введите следующие операторы:

>>> sys.path.append(r"[package directory path]\\Parsers\\FileType1_Parsers\\package1")

Вы можете сделать это и для любых других модулей в пакете.Теперь вы можете просто использовать эту команду:

from package1 import example_class

Надеюсь, это поможет!

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