2025, Oct 21 07:16
Ошибка установки fastparquet в Python 3.8: решение с фиксацией cramjam
Разбираем ошибку установки fastparquet в Python 3.8 при версиях ниже 2024.2.0 и даем решение: закрепить cramjam==2.10.0 для стабильной установки через pip.
Установка fastparquet в окружении Python 3.8 может неожиданно завершиться сбоем, если вы нацелены на более старые релизы. При установке версии ниже 2024.2.0 pip может прерваться с сообщением об ошибке дистрибуции, которое на первый взгляд не связано с вашими прямыми зависимостями.
Как воспроизвести сбой установки
В Python 3.8 простая установка fastparquet версии ниже 2024.2.0 приводит к ошибке:
python3.8 -m pip install "fastparquet<2024.2.0"
ERROR: Could not find a version that satisfies the requirement puccinialin (from versions: none)
ERROR: No matching distribution found for puccinialin
Что происходит
Сбой связан с ограничениями зависимостей fastparquet. fastparquet требует cramjam>=2.3. В Python 3.8 и при указанном диапазоне версий fastparquet эта цепочка зависимостей приводит к описанной выше ошибке установки.
Решение
Закрепление версии зависимости снимает тупик резолвера. Явно указать версию cramjam — рабочий вариант:
python3.8 -m pip install "fastparquet<2024.2.0" "cramjam==2.10.0"
Если вы используете файл требований, пропишите оба ограничения, чтобы окружения оставались воспроизводимыми:
fastparquet<2024.2.0
cramjam==2.10.0
Затем установите как обычно:
python3.8 -m pip install -r requirements.txt
Почему это важно
Старые версии Python усиливают важность точного управления зависимостями. Даже если пакет верхнего уровня совместим, его транзитивные зависимости могут проявить пробелы, зависящие от платформы или версии. Явная фиксация версий предотвращает неожиданные сбои резолвера и удерживает сборки стабильными на разных машинах и в CI.
Выводы
Если вы работаете с Python 3.8 и вам нужен fastparquet ниже 2024.2.0, используйте явную фиксацию версии зависимой библиотеки. Устанавливайте fastparquet вместе с cramjam==2.10.0, чтобы избежать ошибки дистрибуции, и внесите эти ограничения в описание окружения, чтобы установки оставались консистентными.
Материал основан на вопросе со StackOverflow от korolkevichm и ответе от korolkevichm.