У меня есть пакет так:Импортировать все из текущего пакета
lib/
__init__.py
package/
__init__.py
module1.py
module2.py
framework.py
Мои __init__.py
структурирована как таковой:
__all__ = ['module1', 'module2']
def run_all():
for module in __all__:
eval(module).Bot().start()
Каждый модуль представляет собой небольшую программу, которая будет работать с большей один , и была создана функция run_all()
, чтобы легко это сделать.
Если импортировать каждый модуль в отдельности, например, так:
from lib.package import module1
from lib.package import module2
все работает как надо. Хотя, если я пытаюсь импортировать все:
from lib.package import *
или даже так:
from . import *
Я получаю NameError, что пакет не определен.
Как я могу импортировать модули внутри пакета для работы run_all()
?
EDIT
Когда я добавляю from . import *
или from lib.package import *
к module.__init__.py
(или даже вообще ничего) я получаю эту ошибку:
Traceback (most recent call last):
File "./main.py", line 64, in <module>
Bot().start()
File "./main.py", line 45, in start
package.run_all()
File "/home/bkvaluemeal/Documents/bot/lib/package/__init__.py", line 16, in run_all
eval(module).Bot().start()
File "<string>", line 1, in <module>
NameError: name 'module1' is not defined
Пожалуйста, покажите нам точный текст Ошибка. – Kevin
'Traceback (самый последний вызов последнего): Файл "./master.py", строка 64, в Bot() начать() File "./master.py", строка 45, в начальном пакете. .run_all() Файл «/home/bkvaluemeal/Documents/bot/lib/package/__init__.py», строка 16, в run_all eval (module) .Bot (). start() Файл «», строка 1, in NameError: name 'module1' не определен' –
bkvaluemeal
Это исключение (которое действительно должно быть отредактировано в вопросе, а не неформатировано в комментарии) происходит, когда вы вообще не импортируете подмодули (что неудивительно). Можете ли вы показать исключение, которое вы получите, если будете делать. import * 'или' из lib.package import * '? – Blckknght