Как импортировать модуль по пути, прописанному в переменной?

У меня множество файлов в одной папке (модули с данными разных категорий товаров). Имя файла (модуля) должен выбираться в зависимости от категории, например, если категория "car", то имя файла "characterist_0014_car". Я надеялся, что получится переменной присвоить путь для импорта модуля в виде строки, а потом, используя eval() с помощью этой переменной импортировать требующийся модуль:

def ajax_characterist_filterDef(request):

    category = request.GET["category"]

    path = 'from shop.models.product.characterist import characterist_0014_'+ category

    eval(path)

Но, вполне ожидаемо, ничего не вышло, кроме ошибки.

Internal Server Error: /shop/category/ajax/characterist_filter/
Traceback (most recent call last):
  File "C:\Users\user\wwwkaba\lib\site-packages\django\core\handlers\exception.py", line 47, in inner
    response = get_response(request)
  File "C:\Users\user\wwwkaba\lib\site-packages\django\core\handlers\base.py", line 179, in _get_response
    response = wrapped_callback(request, *callback_args, **callback_kwargs)
  File "C:\Users\user\Google Диск\bf\shop\views\category\ajax\characterist\ajax_characterist_filter.py", line 29, in ajax_characterist_filterDef
    eval(path)
  File "<string>", line 1
    from shop.models.product.characterist import characterist_0014_pk
       ^
SyntaxError: invalid syntax

Посоветуйте пожалуйста мне, и многим другим, кто не нашёл в инете ответа, как это бы решили вы. Заранее благодарю.


Ответы (1 шт):

Автор решения: n1tr0xs

Нужно использовать не eval, а exec

exec(path)

→ Ссылка