Как определить функцию, которая импортирует модули - PullRequest
0 голосов
/ 16 апреля 2019

Я пытаюсь определить функцию, которая импортирует модули и помещает эту функцию в собственный модуль, чтобы при работе над проектом определенного типа все, что мне нужно было набрать:

    import from user *
    setup()
    #setup is the function which imports the modules

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

Вот код в моем модуле:

    def setup():
        import keyboard, win32api, win32con

Дайте мне знать, если я могу предоставить больше информации, и спасибо за любую помощь.

Ответы [ 2 ]

1 голос
/ 16 апреля 2019

Обычно хорошей идеей является явное импортирование имен в ваш модуль там, где они вам нужны, чтобы вы могли видеть, откуда что происходит. Явное лучше, чем неявное . Но для интерактивных сессий иногда бывает полезно импортировать множество вещей одновременно, поэтому ...

Ваша проблема в том, что ваш метод setup импортирует эти модули в свое собственное пространство имен, которое недоступно за пределами функции. Но вы можете сделать что-то намного проще. Если ваш user модуль только что содержал:

import keyboard, win32api, win32con

Тогда в вашей интерактивной сессии вы можете сделать:

>>> from user import *

Эти модули должны быть доступны в пространстве имен вашего сеанса.

1 голос
/ 16 апреля 2019

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

В целом, политика «импортировать все, что необходимо» - это то, что я считаю неправильным. Ваш код должен импортировать только то, что ему действительно нужно. Зависимости лучше сводить к минимуму и явно.

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