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
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:
pip freeze > requirements.txt to save the set of installed Python packages;
pip install -r requirements.txt to install the previously-recorded set of Python packages.
When using Conda environments, the following extensions are provided:
conda env export > environment.yml to save the set of installed Python packages;
conda env [create/update] --file environment.yml to install the previously-recorded set of Python packages.