Импорт модуля, который импортирует другие модули
Есть модуль main.py:
try:
from importer import Importer
Importer._import_modules()
except ImportError:
raise ImportError('Please reinstall module')
class Module(OtherModule):
def __init__(self):
super(Module, self).__init__()
self.__version = settings.__version__
self.debug = settings.DEBUG
self.__author = settings.__author__
self.settings = {
"author": self.__author,
"version": self.__version,
"debug": self.debug
}
self.debug_text = {}
есть модуль importer.py:
class Importer:
@staticmethod
def _import_modules():
try:
import pymysql
from rich import print
from rich.console import Console
from rich.table import Table
from rich.text import Text
from prettytable import PrettyTable
except ImportError:
raise ImportError("Please install required modules.")
try:
import settings
from somemodule import SomeClass
except ImportError:
raise ImportError('Please reinstall module')
try:
import sqlite3
except ImportError:
raise ImportError("Standard modules could not be imported")
Как мне реализовать импорт модулей в другом файле и потом этот же файл импортировать?
Ответы (1 шт):
Автор решения: nomnoms12
→ Ссылка
Вам не нужно выносить импорты в отдельный файл, это плохая практика. Импортируйте всё, что нужно, в начале модуля
Но если интересно, то Ваш код не работает, потому что импорты производятся в теле функции, т.е. в локальной области видимости. Вы не можете получить к ним доступ ни через объект модуля, ни через класс, ни через функцию — по аналогии с объявлением локальной переменной.
Решением может быть вынос импортов в глобальную область видимости модуля:
import sqlite3
from importer import *
sqlite3
Ещё можно сделать импортируемый модуль статическим методом класса:
class Importer:
import sqlite3
sqlite3 = staticmethod(sqlite3)
from importer import Importer
Importer.sqlite3