Импорт импортов из другого файла
Я увидел много схожих вопросов, но ни один, из которых я прочитал, не дал ответа
Директория be like:
-configs
--config.py
--config2.py
-__init__.py
-__main__.py
Есть главный файл main.py, в этой же папке есть 2 файла: init.py и папка configs В папке configs 2 файла: config.py и config2.py, если в первом файле некоторые переменные, которые до этого нормально импортировались в main.py, то во второй я захотел засунуть все импорты в принципе, которые понадобятся в main.py. Написал простую функцию в config2.py:
def imports():
global random, emoji, configs, config, TOKEN, KOKEN, ROBIN, ITD
import random
import emoji
from configs.config import(
TOKEN,
KOKEN,
ROBIN,
ITD)
В main.py же в начале написал это:
from configs import config2
config2.imports()
В config2 все импорты работают, проверил дописав в конце:
imports()
print(random.random(), TOKEN)
Теперь сам вопрос: как сделать так, чтобы функция нормально работала внутри main.py, или какой есть вообще другой способ, который мне поможет?
Ответы (2 шт):
import runpy
def include(file):
globals().update(runpy.run_path(file,globals()))
include('../pip.py')
print(math.pi)
#3.141592653589793
суть в функции в том, что она исполняет указаный файл, так как будто его содержимое написано в основном. Ограничения: нельзя из файла а вызвать файл б в котором вызвается файл в. то есть в подключаемом файле данна функция не может быть исспользована
Здесь нашел ответ, всё гораздо легче, чем я думал. Когда я пробовал просто импортировать файл (1)config2 путём import configs.config2 в main, и внутри (1)него не было функции imports(), то все внутренние ссылки на модули внутри main должны были содержать перед этим 'config2.', до меня это почему-то не дошло. А если просто прописать from configs.config2 import *, то всё прекрасно работает.