Об этом проекте
nepenthe — это инструмент для создания, версионирования и распространения больших общих сред conda/PyPI. Заявленная цель — позволить команде описать среду один раз, решить её один раз с помощью rattler, заморозить результат в переносимый лок-файл и опубликовать этот лок в версионированный реестр на любом хранилище, чтобы каждая машина устанавливала точно такую же среду без повторного решения.
Ключевые возможности, описанные в README:
- Композиция на основе манифестов: декларативные манифесты среды вместо разрозненных файлов требований.
- Нативное решение через rattler (чистый Rust), без накладных расходов интерпретатора Python.
- Переносимые локи: многоплатформенные rattler_lock файлы, воспроизводимые по построению.
- Кросс-платформенное решение: решение linux-64, osx-arm64 и win-64 с одного хоста в один многоплатформенный лок.
- Подключаемые бэкенды: чтение/запись спецификаций в file://, s3:// и https://, с каналами, указывающими на любой сервер, например, внутренний Artifactory.
- Версионированный реестр: независимое версионирование для каждой среды с неизменяемыми локами, адресуемыми по содержимому.
- Установка без conda: связывание лока в префикс с помощью rattler, без необходимости conda/mamba/micromamba.
- Совместимость с conda: экспорт любого лока как спецификации @EXPLICIT, используемой с conda create --file.
- Безопасность: учетные данные вводятся при использовании и не записываются в артефакты.
Проект охватывает жизненный цикл от производителя к потребителю: составление манифеста, решение и заморозка многоплатформенных локов, публикация их в версионированный реестр и установка без conda, либо из CLI, либо из Python. Также упоминаются автономные пакеты pack/unpack и интеграция с pyproject.toml, которая поддерживает зависимости проекта в синхронизации с потребляемой средой.
Пример рабочего процесса из README: YAML-манифест объявляет имя проекта, каналы, платформы, версию Python и корневые зависимости; команда сборки создает полностью закрепленный лок-файл; команда экспорта отображает лок как спецификацию @EXPLICIT conda; установка может быть выполнена либо с помощью conda из спецификации, либо с помощью nepenthe из лока. CLI — это единый мультиколл-бинарник, где np и npb являются симлинками на nepenthe, а npb служит ярлыком для подкоманды сборки. Python-привязка повторяет CLI для операций сборки, создания и активации. Раздел pyproject.toml может закрепить имя среды, реестр и версию, с командами sync и check для установки указанной среды и проверки совместимости зависимостей проекта.
README позиционирует nepenthe как отличный от лок-файлов на проект (pixi, uv) и повторно решаемых манифестов (environment.yml): он создает и распространяет общую среду, потребляемую многими репозиториями, версионированную и неизменяемую. Документация организована в вики, охватывающую мотивацию, концепции, манифесты, каналы и Artifactory, реестр, установку, потребление в проекте, упаковку, Python API и бэкенды, а также материалы для участников по архитектуре и сборке из исходников. Проект лицензирован под Apache-2.0.
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.