Вопрос или проблема
Я сейчас занимаюсь pygame, запускаю небольшую программу, которая открывает окно pygame и показывает вступление, представляющее собой простой экран с фоном и двумя кнопками (они подсвечиваются только при наведении курсора).
Когда я запускаю код, мне показывают следующую ошибку в терминале:
Hello from the pygame community. https://www.pygame.org/contribute.html
[ WARN:0] global /tmp/pip-req-build-driubr42/opencv/modules/videoio/src/cap_v4l.cpp (890) open VIDEOIO(V4L2:/dev/video1): can't open camera by index
libGL error: MESA-LOADER: failed to open crocus: /usr/lib/dri/crocus_dri.so: cannot open shared object file: No such file or directory (search paths /usr/lib/x86_64-linux-gnu/dri:\$${ORIGIN}/dri:/usr/lib/dri, suffix _dri)
libGL error: failed to load driver: crocus
libGL error: MESA-LOADER: failed to open swrast: /usr/lib/dri/swrast_dri.so: cannot open shared object file: No such file or directory (search paths /usr/lib/x86_64-linux-gnu/dri:\$${ORIGIN}/dri:/usr/lib/dri, suffix _dri)
libGL error: failed to load driver: swrast
X Error of failed request: BadValue (integer parameter out of range for operation)
Major opcode of failed request: 149 (GLX)
Minor opcode of failed request: 3 (X_GLXCreateContext)
Value in failed request: 0x0
Serial number of failed request: 105
Current serial number in output stream: 106
Судя по тому, как я это вижу, это проблема с видеодрайвером, у меня Mesa Intel® HD Graphics 4600 (HSW GT2), а моя версия Ubuntu 21.10. Мой ноутбук DELL LATITUDE E6440 с Intel® Core™ i5-4300M CPU @ 2.60GHz × 4.
Кто-нибудь может помочь мне??
Я использую miniconda на manjaro amd64 без видеокарты. В conda env py3.7 у меня возникла эта ошибка. Я выключил окружение и использовал систему для запуска pygame. И все сработало нормально.
Ответ или решение
Проблема с PyGame: ошибка libGL при загрузке драйвера swrast
Если вы сталкиваетесь с ошибкой загрузки драйвера OpenGL в вашей системе при работе с PyGame, это может быть связано с отсутствием или неисправностью графических драйверов. Давайте рассмотрим, как вы можете решить эту проблему на Ubuntu 21.10, используя Intel HD Graphics 4600.
Описание проблемы
Вы запускаете небольшую программу на PyGame, которая открывает окно и отображает интро с кнопками. Однако ваше приложение не может корректно работать из-за ошибки загрузки драйвера OpenGL. В терминале выводится следующая ошибка:
libGL error: MESA-LOADER: failed to open crocus: /usr/lib/dri/crocus_dri.so: cannot open shared object file: No such file or directory
libGL error: failed to load driver: crocus
libGL error: MESA-LOADER: failed to open swrast: /usr/lib/dri/swrast_dri.so: cannot open shared object file: No such file or directory
libGL error: failed to load driver: swrast
Возможные причины
Эта ошибка чаще всего возникает по следующим причинам:
- Недостаток графических драйверов: Драйвера для вашего графического оборудования могут быть устаревшими или отсутствовать.
- Конфликт программного обеспечения: Установленные программы или конфигурации библиотек OpenGL могут конфликтовать друг с другом.
- Проблемы с виртуальными средами: Если вы используете системы виртуализации или контейнеры такие как Miniconda, это может вызвать проблемы с доступом к графическим библиотекам.
Как устранить проблему
Вот несколько шагов, которые помогут вам устранить данную проблему:
-
Обновление системы и драйверов
Убедитесь, что ваша система и все драйверы обновлены до последних версий. Выполните следующие команды в терминале:
sudo apt update sudo apt upgrade sudo apt install --reinstall mesa-utils
Это обеспечит установку последней версии графических библиотек, включая необходимые для работы OpenGL.
-
Проверка установки пакета mesa
Убедитесь, что пакет mesa установлен корректно, так как он предоставляет драйверы OpenGL. Выполните:
sudo apt install mesa-utils
-
Установка и настройка драйверов SWRAST
Если предыдущие шаги не помогли, попробуйте установить или обновить драйверы с использованием следующих команд:
sudo apt install --reinstall libgl1-mesa-glx libgl1-mesa-dri
-
Проверка окружения Conda
Если вы используете Conda, попробуйте запустить вашу игру вне этой среды или создайте новое окружение с правильными конфигурациями:
conda deactivate
Либо создайте новое окружение:
conda create -n new_env_name python=3.7 conda activate new_env_name conda install -c conda-forge pygame
-
Дополнительные проверки
Убедитесь, что все системные переменные установлены корректно, чтобы ваши графические ресурсы могли быть найдены и использованы.
Заключение
Выявление точной причины ошибки может оказаться непростой задачей. Воспользуйтесь приведенными выше рекомендациями для устранения проблемы с libGL в вашей системе. Если проблема сохраняется, рассмотрите возможность обновления до более новой версии Ubuntu или драйвера оборудования от производителя. Важно также регулярно проверять обновления и исправления для вашей ОС и программ, чтобы избежать подобных проблем в будущем.