[Python] Относительный импорт - ModuleNotFoundError: No module named 'models' [closed]

Discussão em 'Python' iniciado por Stack, Março 19, 2025.

  1. Stack

    Stack Membro Participativo

    написал класс GPT в одной директории и хочу импортировать его в файл из другой директории, но вылазит ошибка. не могу понять, почему так выходит, если импортирую правильно и есть файлы init.py


    from models import GPT ModuleNotFoundError: No module named 'models'
    ​

    вот код:

    import logging
    from telegram.ext import Application
    from telegram.ext import ApplicationBuilder, ContextTypes, CommandHandler
    from dotenv import load_dotenv
    import os
    from models import GPT

    load_dotenv()
    TELEGRAM_BOT_TOKEN = os.getenv("TELEGRAM_BOT_TOKEN")

    logging.basicConfig(
    format='%(asctime)s - %(name)s - %(levelname)s - %(message)s',
    level=logging.INFO
    )

    class TelegramBot:
    """Основной класс Telegram-бота."""

    def __init__(self, token: str):
    self.token = token
    self.application = ApplicationBuilder().token(self.token).build()
    self.gpt = GPT()
    self.application.add_handler(CommandHandler("start", self.start))
    self.application.add_handler(CommandHandler("ask", self.ask))

    async def start(self, update: Application, context: ContextTypes.DEFAULT_TYPE):
    """Обработчик команды /start."""
    await update.message.reply_text("Привет! Задай мне вопрос с помощью /ask.")

    async def ask(self, update: Application, context: ContextTypes.DEFAULT_TYPE):
    """Обработчик команды /ask."""
    if not context.args:
    await update.message.reply_text("Используйте: /ask [вопрос]")
    return

    question = " ".join(context.args)
    answer = self.gpt.generate_response(question)

    await update.message.reply_text(answer)

    def run(self):
    """Запускает бота в режиме polling."""
    logging.info("Бот запущен!")
    self.application.run_polling()


    if __name__ == "__main__":
    bot = TelegramBot(TELEGRAM_BOT_TOKEN)
    bot.run()

    Continue reading...

Compartilhe esta Página