If you’re using renv with an R project that also depends
on some Python packages (say, through the reticulate package),
then you may find renv’s Python integration useful.
Python integration can be activated on a project-by-project basis.
Use renv::use_python() to tell renv to create
and use a project-local Python environment with your project. If the
reticulate package is installed and active, then
renv will use the same version of Python that
reticulate normally would when generating the virtual
environment. Alternatively, you can set the
RETICULATE_PYTHON environment variable to instruct
renv to use a different version of Python.
If you’d rather tell renv to use an existing Python
virtual environment, you can do so by passing the path of that virtual
environment instead – use renv::use_python(python =
"/path/to/python") and renv will record and use that
Python interpreter with your project. This can also be used with
pre-existing virtual environments and Conda environments.
Once Python integration is active, renv will attempt to
manage the state of your Python virtual environment when
snapshot() / restore() is called. With this,
projects that use renv and Python can ensure that Python
dependencies are tracked in addition to R package dependencies. Note
that future restores will require both renv.lock (for R
package dependencies) and requirements.txt (for Python
package dependencies).
When using virtual environments, the following extensions are provided:
renv::snapshot() calls pip freeze >
requirements.txt to save the set of installed Python
packages;
renv::restore() calls pip install -r
requirements.txt to install the previously-recorded set of Python
packages.
When using Conda environments, the following extensions are provided:
renv::snapshot() calls conda env export >
environment.yml to save the set of installed Python
packages;
renv::restore() calls conda env
[create/update] --file environment.yml to install the
previously-recorded set of Python packages.