Как легко переключаться между разными библиотеками renv в рамках одного проекта.
Что мы сегодня узнаем
Чтобы настроить несколько файлов
renv.lock
в одном проекте.
Нам нужно решение с минимальными усилиями, которое позволит нам:
- Переключение между разными файлами
renv.lock
в зависимости от некоторой переменной среды - Не нужно переустанавливать всю библиотеку
renv.lock
каждый раз, когда мы переключаем проект.
renv
renv
является необходимым пакетом для всех, кто работает с R. Он позволяет создать изолированную библиотеку пакетов, доступную только для вашего проекта. Это жизненно важно для обеспечения воспроизводимости и облегчения совместной работы.
renv
запишет нужные вам пакеты и их версии в файл с именем renv.lock
. Проблема, которую мы сегодня преодолеваем, заключается в том, что renv
официально поддерживает только один renv.lock для каждого проекта. Это неплохое решение, но бывают ситуации, когда вам может понадобиться переключаться между несколькими renv.lock
. Например:
- Вы работаете на нескольких системах (Windows, MacOs, Linux).
- Вам необходимо убедиться, что ваша работа совместима с различными версиями R.
- Вы хотите иметь развертывания в разных целевых средах из одной кодовой базы.
Разработчики renv
утверждают, что пользователи несут ответственность за работу с этими сценариями, а не renv
. Хотя я согласен с принципом здесь, я все же хотел найти способ сделать это легко, без дублирования кодовых баз, создания нескольких ветвей или чего-то подобного.
ренв запуск
Когда вы запускаете сеанс R в рамках проекта renv
, R сначала использует файл .Rprofile
. .Rprofile
, затем источники renv/activate.R
. Это очень длинный файл, который выполняет несколько функций. В крайнем резюме:
- Он проверяет, что
renv
установлен. - Он проверяет
renv.lock
. - Он выполняет
renv::status()
.
Если мы изучим renv/activate.R
и исходный код renv
, мы поймем, что пути обрабатываются с помощью Sys.getenv()
.
Например, функция renv:::renv_paths_lockfile
проверяет глобальную переменную…