Как импортировать все модули py из папки

Рейтинг: 0Ответов: 2Опубликовано: 31.01.2023

Для своего проекта я хочу сделать каждую модельку как отдельный py файл с одним классом Есть папка models с N числом файлов, в каждом из которых лежит класс Как сделать так, чтобы код сам смотрел каждый py файл и импортировал его, чтобы я мог обратиться к классу внутри, например sword()?

Ответы

▲ 1

Структура проекта

myproject
├── models
│   ├── __init__.py
│   └── mymodel.py
└── serv.py

__init__.py формирует список подмодулей

import os, pkgutil
__all__ = list(module for _, module, _ in pkgutil.iter_modules([os.path.dirname(__file__)]))

Сам подмодуль для примера

class Mymodel():
    pass

Использование (serv.py)

from models import *
m = mymodel.Mymodel()

Но в редакторе будет подчеркивать "mymodel" is not defined. Если используешь линтер и автодополнение при написании кода, то __init__.py формируй вручную

__all__ = ["mymodel", ...]
▲ 0

Попробуйте sysspath.append() или sys.path.insert()

Например

import sys
sys.path.append('/.../application/app/folder')