Мы в этом году выпускали релиз под Python-2.7, исходники свежие, а зависимости стухли примерно лет пять назад. Раз не компилируются - значит старые.
По теме, https://github.com/mholt/archiver/issues/113 - метод задепрекейчен в 2018 году, вам нужно или ту древнюю версию в репу положить, либо сделать код совместимым с зависимостями.
Похоже что у вас в PYTHONPATH находится директория, содержимое которой Вы привели (products-aggregator.mysite.polls.models.Query). При этом в INSTALLED_APPS Вы отталкиваетесь от products-aggregator/mysite как от корня проекта. Проверяйте PYTHONPATH и рабочую директорию, из которой происходит запуск тестов.
корневой плейлист: содержит ссылки на другие m3u8-файлы, аннотированные метаданными о размерах и битрейте соответствующих потоков
"чанклист": список фрагментов одного файла, с длительностями и прочими метаданными.
Плееру скармливается корневой плейлист, и он в зависимости от реализованной логики переключает воспроизведение фрагментов с одного чанклиста на другой.
Если пользователь не заходит и вы по-прежнему хотите ему продлевать сессию, то просто поставьте ей expire на 2100 год.
Если смена пароля удаляет сессию, то это достаточно безопасно (хотя кто я такой чтобы судить об этом)
Это означает что либо весь вывод принта перенаправлен куда-то в файл или в /dev/null, либо до принт просто не выполняется (поток исполнения туда не приходит), либо строка перезатирается чем-то другим в потоке вывода.
Не очень понятно, что есть File. А так да, разница только в использовании InMemoryUploadedFile.
Ну и еще я бы присваивал напрямую а не через image.save(), но тут лучше воспользоваться отладчиком и документацией Django.
archiver.NewZip().Archive(...)