Убедитесь, что вы используете Django 2.X, потому что из этой версии Django url был изменен с этой версии, вам нужно импортировать URL-адреса, подобные этому.
from django.urls import path
, но до этого импорт выглядел следующим образом:
from django.conf.urls import url
Таким образом, либо вы, и ваш учебник используете другую версию, либо вы неверны, вы можете вносить изменения как в зависимости от ситуации.
Это ошибка в C-коде. В строке surface.c 2258 для surf_blits
имеется следующий тест:
if (dest->flags & SDL_OPENGL &&
!(dest->flags & (SDL_OPENGLBLIT & ~SDL_OPENGL))) {
bliterrornum = BLITS_ERR_NO_OPENGL_SURF;
goto bliterror;
}
Тогда как в строке surface.c 2121 для surf_blit
код:
#if IS_SDLv1
if (dest->flags & SDL_OPENGL &&
!(dest->flags & (SDL_OPENGLBLIT & ~SDL_OPENGL)))
return RAISE(pgExc_SDLError,
"Cannot blit to OPENGL Surfaces (OPENGLBLIT is ok)");
#endif /* IS_SDLv1 */
Обратите внимание на #if IS_SDLv1
.
Проблема, кажется, исходит из SDL_OPENGLBLIT
, который в настоящее время устарел .
Не используйте устаревший режим SDL_OPENGLBLIT, который разрешал как блиттинг, так и использование OpenGL. Этот флаг устарел, по нескольким причинам. При многочисленных обстоятельствах использование SDL_OPENGLBLIT может повредить ваше состояние OpenGL.
blockquote>К сожалению, я не эксперт в OpenGL и не могу объяснить дальше. Надеюсь, кто-то может опубликовать более точный ответ.
Что я точно знаю, так это то, что я могу поднять
BLITS_ERR_SEQUENCE_SURF
непосредственно перед (например, даваяpygame.Rect
в качестве первого объекта вblit_args
), и я не могу поднятьBLITS_ERR_INVALID_DESTINATION
сразу после. [ 1121]Это заставляет меня думать, что что-то происходит с линиями выше.
РЕДАКТИРОВАТЬ
Я могу подтвердить, что, если я добавлю
#if IS_SDLv1
вокруг теста выше и перекомпилирую Pygame, это сработает. Не знаю почему, хотя! ☺Я поднял проблему на GitHub .