OSError: [WinError 10106] Не удается загрузить или инициализировать нужного поставщика услуг
Вот такая проблема. Я пишу сайт, который, грубо говоря, по клику кнопки будет запускать бота для Discord. И если я пытаюсь запустить его из браузера, то выскакивает ошибка "OSError: [WinError 10106] Не удается загрузить или инициализировать нужного поставщика услуг", ругается при этом на сторонние библиотеки Python, которые не идут в комплекте с обычными (библиотеки при этом на компьютер установлены и обновлены).
Если я пытаюсь запустить программу напрямую из Visual Studio, то всё работает и библиотеки все функционируют. Подскажите, в чем может быть дело? Может это такая защита браузера в ответ на запуск бота? Просто, раньше такого вроде не было - я запускал ботов и со своей среды на компьютере и после установки сайта на сервер
Upd: Вопрос связан именно с библиотекой asyncio. Другие библиотеки тоже выдают ошибку, но судя по логам, ошибка связана с запуском этими библиотеками библиотеки asyncio
Upd2: В некоторых местах я прочитал, что проблема может зависеть от наличия виртуальной среды, я ее не создавал, но создал и добавил туда все необходимые библиотеки - не помогает. Сетевые настройки также сбрасывал
Upd3: Провел эксперимент, который немного помогает понять проблему: удалил строку "import _overlapped" из файла "windows_events.py", на которую в принципе и ругается код при запуске программы именно с сайта. И попробовал запустить программу напрямую из VSC. Как мы помним, это удавалось. И сейчас удалось, ей на эту строку параллельно, значит дело именно в ней и том, что он запускает
Ответы (1 шт):
Вы удивитесь, но я понял в чем дело. Точнее, я понял, как проблему исправить, но не совсем понял почему, о чем прошу помощи у вас. Всё оказалось проще, строка "import _overlapped" из файла "windows_events.py" библиотеки python согласно справочной информации отвечает (каким то образом) за работу системы ввода-вывода. И я тут понял, чем отличается запуск моей программы из сайта и просто с VSC. При запуске с браузера она должна выполняться так:
p = subprocess.Popen(['python', sys.path[0]+'\static\prog\Bot.py'], shell = False, env = {'user': login_after_enter})
Выражение env = {'user': login_after_enter} передает запускаемой программе переменную со значением (эта переменная очень важна в коде, так как является ключом базы данных, по которому программа понимает, какие исходные данные она должна получить). Я так понимаю, переменная же хранится в оперативной памяти, что и вызывает конфликт при запуске библиотеки и каких-то ее частей, связанных с оперативной памятью. Удалить env = {'user': login_after_enter} устраняет конфликт, хотя я не совсем понимаю, из-за чего он, собственно, получился. Если кто разбирается, было бы интересно узнать и понять.