Импорт классов в подпакетах в основное пространство имен с пакетом Python - PullRequest
3 голосов
/ 26 июня 2011

Я пытаюсь реорганизовать свою кодовую базу в правильный пакет Python (с подпакетами), готовый для загрузки в PyPI. У меня есть следующие каталоги (для тестирования):

Py6S/
    __init__.py
    test.py
    Params/
          __init__.py
          AeroModel.py

AeroModel.py содержит:

class AeroModel:
    NO_AEROSOL=0
    CONTINENTAL=1
    MARITIME=2
    URBAN=3
    USER=4
    DESERT=5
    BIOMASS_BURNING=6
    STRATOSPHERIC=7

Py6S init .py содержит:

__all__ = ["Params"]

Параметры init .py содержат:

__all__ = ["AtmosModel", "AeroModel", "AtmosCorr"]

Однако, когда я делаю from Py6S import *, я получаю параметры, доступные для ссылки, но не AtmosModel или AeroModel.

Я хочу иметь возможность набирать from Py6S import * и получать все AeroModel, AtmosModel, AtmosCorr и т. Д., Доступные для использования, без необходимости ставить имена модулей перед ними.

1 Ответ

1 голос
/ 26 июня 2011

если у Py6S __init__.py есть from Params import *: вам нужно сделать:

import Params
__all__ = ["Params"]
from Params import *
__all__ += Params.__all__

, чтобы добавить их в __all__

Py6S
...