Sarcandi
@Sarcandi

Ошибка при импорте, «ModuleNotFoundError: No module named *моя папка проекта*». Как исправить?

Visual Studio Code никаких ошибок не выдает, только Python при запуске main.py.

Текст ошибки:
Traceback (most recent call last):
File "d:\Sarcandi\Python\SarOS Bots\saros_bot\main.py", line 5, in
import saros_bot
ModuleNotFoundError: No module named 'saros_bot'


Структура проекта:
9fJh0.png

Код main.py:
from aiogram import Bot, Dispatcher, F
from aiogram.filters import Command
from asyncio import run
from logging import basicConfig, DEBUG, INFO, WARN, ERROR, CRITICAL
from saros_bot import test_bot_token as token, start_handler, comment_handler, clear_keyboard_handler, manage_db_handler, AntiFloodMiddleware

bot = Bot(token=token)
dp = Dispatcher()

async def start() -> None:
    dp.message.middleware(AntiFloodMiddleware())
    dp.message.register(start_handler, Command('start'))
    dp.message.register(manage_db_handler, Command('manage_db'))
    dp.message.register(clear_keyboard_handler, Command('clear_keyboard'))
    dp.message.register(comment_handler, F.chat.id == -1001234567890)
    await bot.delete_webhook(drop_pending_updates=True)
    await dp.start_polling(bot)

if __name__ == '__main__':
    basicConfig(level=DEBUG)
    run(start())

Код __init__.py:
from saros_bot.data.secret_data import main_bot_token, test_bot_token, admins_id, SarcandiID, SarOS_Bot_News_id
from saros_bot.files.functions.database_functions import manage_db_function
from saros_bot.files.handlers.handlers import start_handler, comment_handler, clear_keyboard_handler, manage_db_handler
from saros_bot.files.keyboards.inline_keyboards import subscribe_SarOS_Bot_News_inline_keyboard, database_inline_keyboard
from saros_bot.files.keyboards.reply_keyboards import clear_reply_keyboard, main_menu_reply_keyboard
from saros_bot.files.middlewares.middlewares import AntiFloodMiddleware, CheckSubscriptionMiddleware
  • Вопрос задан
  • 182 просмотра
Решения вопроса 1
Vindicar
@Vindicar
RTFM!
Проблема в том, что ты пытаешься сделать бота и скриптом, и модулем. А импорт работает только одним способом.
Я бы сказал, просто вынеси main в папку выше (ну или остального бота в подпапку).
Тогда бот будет модулем, а главный скрипт - скриптом.

Не, ты, конечно, можешь в __init__ написать изврат в духе
try:
    from .wtf import stuff
except ImportError:
    from wtf import stuff

И сделать в main from __init__ import *
Но не надо так делать. Пожалеешь потом.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@Everything_is_bad
Чтобы работало "from saros_bot", родительская директория для директории saros_bot должна либо быть в PYTHONPATH, либо быть текущий для интерпретатора
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы