Как импортировать только функции в скрипте с пользовательским пакетом / модулем в Python? - PullRequest
0 голосов
/ 28 августа 2018

Я создаю пакет и заметил, что когда я импортирую субмодули, они включают в себя также все встроенные модули, которые я импортировал. Есть ли способ обойти это, чтобы при навигации по субмодулю с завершенной вкладкой присутствовали только функции и объекты из скрипта?

Например, когда я импортирую examplemodule.submodule, чтобы видеть только function_i_want, когда я перемещаюсь по содержимому пакета?

Структура каталогов

examplemodule
    | __init__.py
    | submodule
         | __init__.py
         | submodule.py

examplemodule | субмодуль | submodule.py

from collections import *
def function_i_want():
    return True

Вот пример того, что я могу импортировать из модуля:

>>> import examplemodule
>>> from examplemodule import submodule
>>> submodule.
submodule.AsyncGenerator(   submodule.MappingView(
submodule.AsyncIterable(    submodule.MutableMapping(
submodule.AsyncIterator(    submodule.MutableSequence(
submodule.Awaitable(        submodule.MutableSet(
submodule.ByteString(       submodule.OrderedDict(
submodule.Callable(         submodule.Reversible(
submodule.ChainMap(         submodule.Sequence(
submodule.Collection(       submodule.Set(
submodule.Container(        submodule.Sized(
submodule.Coroutine(        submodule.UserDict(
submodule.Counter(          submodule.UserList(
submodule.Generator(        submodule.UserString(
submodule.Hashable(         submodule.ValuesView(
submodule.ItemsView(        submodule.defaultdict(
submodule.Iterable(         submodule.deque(
submodule.Iterator(         submodule.function_i_want(
submodule.KeysView(         submodule.namedtuple(
submodule.Mapping(          submodule.submodule

Ответы [ 2 ]

0 голосов
/ 28 августа 2018

что вы можете сделать, это импортировать только модуль, например импортировать пример модуля examplemodule.submodule то, что это делает, вызывает функцию, только если вы сначала пишете модуль, а затем .submodule. это также хорошо, если у вас более одного модуля

0 голосов
/ 28 августа 2018

Когда вы говорите from x.y import *, вы импортируете все, что определено в __all__ из модуля y, который находится в каталоге x.

Если вы хотите только import подмножество y, вы можете сделать следующее:

  1. Ограничение того, что вы импортируете из своего скрипта

from examplemodule.submodule import function_i_want

или

from examplemodule.submodule import (
    function_i_want,
    other_function_i_want
)
  1. Определите __all__ в вашем __init__.py

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