Interface to 'Python' modules, classes, and functions. When calling into 'Python', R data types are automatically converted to their equivalent 'Python' types. When values are returned from 'Python' to R they are converted back to R types. Compatible with all versions of 'Python' >= 2.7.
Fixed an issue where Python objects within Python lists would not be converted to R objects as expected.
Fixed an issue where single-row data.frames with row names could not be converted. (#468)
Fixed an issue where
reticulate could fail to query Anaconda environment
names with Anaconda 3.7.
Fixed an issue where vectors of R Dates were not converted correctly. (#454)
Fixed an issue where R Dates could not be passed to Python functions. (#458)
Fixed an issue where attempts to activate virtual environments created with virtualenv 16.4.1 would fail. (#437)
Fixed an issue where conversion of Pandas Categorical variables to R objects would fail. (#389)
Textual output generated when adding items to a matplotlib plot object are now suppressed.
If the last statement in a Python chunk returns a matplotlib plot object, the plot will now be auto-shown as in other environments.
The reticulate function help handler now returns function arguments for Python builtin functions.
Top-level Python statements can now include leading indent when submitted
matplotlib figure is now cleared as each Python chunk in an
R Markdown document is run.
r helper object (used for evaluating R code from Python) now better
handles conversion of R functions. (#383)
use_virtualenv() function now understands how to bind to virtual
environments created by the Python
Reticulate better handles conversions of R lists to Python, and similarly,
Python lists to R. We now call
r_to_py() on each sub-element of an R list,
py_to_r() on each sub-element of a Python list.
Reticulate now always converts R
Date objects into Python
objects. Note that these conversions can be inefficient -- if you would
prefer conversion to NumPy
datetime64 objects / arrays, you should convert
your date to
Python chunks containing errors will cause execution to halt if 'error=FALSE' during render, conforming with the default knitr behavior for R chunks.
The output of bare statements (e.g.
1 + 1) is now emitted as output when using
the reticulate Python engine.
Remapping of Python output streams to be R can now be explicitly enabled
by setting the environment variable
RETICULATE_REMAP_OUTPUT_STREAMS to 1. (#335)
Allow syntax errors in Python chunks with 'eval = FALSE' (#343)
Avoid dropping blank lines in Python chunks (#328)
Use "agg" matplotlib backend when running under RStudio Desktop (avoids crashes when attempting to generate Python plots)
as.character() S3 method for Python bytes (defaults to converting using
py_main_thread_func() for providing R callbacks to Python libraries that may
invoke the function on a Python background thread.
Output is now properly displayed when using the
reticulate REPL with
Windows + Python 2.7.
Address memory protection issues identified by rchk
Make variables defined using
%as% operator in
with() available after
execution of the with block (same behavior as Python).
Check for presence of "module" property before reading in
Only update pip in
virtualenv_install() when version is < 8.1
Support converting Python
OrderedDict to R
Support for iterating all types of Python iterable
virtualenv_python() functions for finding the
python binary associated with an environment.
Detect python 3 in environments where there is no python 2 (e.g. Ubuntu 18.04)
Always call r_to_py S3 method when converting objects from Python to R
Handle NULL module name when determining R class for Python objects
Convert RAW vectors to Python bytearray; Convert Python bytearray to RAW
Use importlib for detecting modules (rather than imp) for Python >= 3.4
Close text connection used for reading Python configuration probe
source_python() now flushes stdout and stderr after running the associated
Python script, to ensure that
print()-ed output is output to the console.
Fixed an issue where logical R matrices would not be converted correctly to their NumPy counterpart. (#280)
Fixed an issue where Python chunks containing multiple statements on the same line would be evaluated and printed multiple times.
py_del_item() as lower-level
APIs for directly accessing the items of e.g. a Python dictionary or a Pandas
Fix issue with Pandas column names that clash with built in methods (e.g. 'pop')
str() output for Python objects (print
__dict__ if available)
Improved filtering of non-numeric characters in Python / NumPy versions.
py_func() to wrap an R function in a Python function with the same signature as that of the original R function.
Added support for conversion between
Matrix::dgCMatrix objects in R and
Scipy CSC matrices in Python.
source_python() can now source a Python script from a URL into R environments.
source_python() in the main Python module.
py_install() function for installing Python packages into virtualenvs and conda envs
Automatically create conda environment for
delay_load parameter from
repl_python() function implementing a lightweight Python REPL in R.
Support for converting Pandas objects (
Support for converting Python
py_dict() function to enable creation of dictionaries based on lists of
keys and values.
Provide default base directory (e.g. '~/.virtualenvs') for environments
specified by name in
Fail when environment not found with
use_condaenv(..., required = TRUE)
use_* python version is satsified when using
required argument from
Fix leak which occurred when assigning R objects into Python containers
Add support for Conda Forge (enabled by default) to
Added functions for managing Python virtual environments (virtualenv)
Remove implicit documentation extraction for Python classes
Library\bin to PATH on Windows to ensure Anaconda can find MKL
source_python() function for sourcing Python scripts into R
RETICULATE_DUMP_STACK_TRACE environment variable which can be set to
the number of milliseconds in which to output into stderr the call stacks
from all running threads.
Provide hook to change target module when delay loading
Scan for conda environments in system-level installations
Support for miniconda environments
include knitr chunk options for Python engine
Use existing instance of Python when reticulate is loaded within an embedded Python environment (e.g. rpy2, rice, etc.)
Force use of Python specified in PYTHON_SESSION_INITIALIZED (defined by rpy2)
Define R_SESSION_INITIALIZED (used by rpy2)
Force use of Python when
required = TRUE in
Force use of Python specified by RETICULATE_PYTHON
dict: Don't scan parent frame for Python objects if a single unnamed list
Wait as long as required for scheduling generator calls on the main thread
Refine stripping of object addresses from output of
py_id() function to get globally unique ids for Python objects
py_len() function and S3
length() method for Python lists (already
length() methods for dicts, tuples, and NumPy arrays).
py object (reference to Python main module)
eng_python() (knitr engine for Python chunks)
Improved compatibility with strings containing high unicode characters when running under Python 2
dim methods for NumPy arrays (semantics of NumPy reshaping are
different from R reshaping)
array_reshape function for reshaping R arrays using NumPy (row-major)
Provide mechanism for custom R wrapper objects for Python objects
Added interface to pickle (
Catch and print errors which occur in generator functions
Write using Rprintf when providing custom Python output streams (enables correct handling of terminal control characters)
isatty when providing custom Python output streams
np_array function for creating NumPy arrays and converting the data type,
dimensions, and in-memory ordering of existing NumPy arrays.
length functions for NumPy arrays
py_set_seed function for setting Python and NumPy random seeds.
Search in additional locations for Anaconda on Linux/Mac
Improved support for UTF-8 conversions (always use UTF-8 when converting from Python to R)
Ignore private ("_" prefixed) attributes of dictionaries for .DollarNames
Provide "`function`" rather than "function" in completions.
Fail gracefully if call to conda in
conda_list results in an error
pip_ignore_installed option to
dict() function to accept keys with mixed alpha/numeric characters
conda_list() to discover conda environments on Windows (slower but
much more reliable than scanning the filesystem)
Add interface for registering F1 help handlers for Python modules
Provide virtual/conda env hint mechanism for delay loaded imports
Search WORKON_HOME (used by virtualenv_wrapper) for Python environments
priority field for delay loaded modules.
Use json output from conda_list (handle spaces in path of conda env)
Look for callable before iterable when converting Python objects to R
Correct propagation of errors in R functions called from Python
Support for generators (creating Python iterators from R functions)
completed value for
Support for converting 16-bit floats (NPY_HALF) to R
Don't throw error when probing Python <= 2.6
Copy Python dictionary before converting to R named list (fixes issue with dictionaries that are mutated during iteration, e.g. sys.modules)
Ensure that existing warning filters aren't reset by py_suppress_warnings
Detect older versions of Anaconda during registry scanning.
Don't probe python versions on windows when no executable is found
Poll for interrupts every 500ms rather than 100ms
Provide sys.stdout and sys.stderr when they are None (e.g. in R GUI)
Add Scripts directory to PATH on Windows
Add iter_next function for element-by-element access to iterators
Eliminate special print method for iterators/generators
py_help() function for printing documentation on Python objects
dict() parent frames for symbols; only use symbols which inherit
from python.builtin.object as keys.
import_from_path() function for importing Python modules from
py_discover_config() function to determine which versions of Python
will be discovered and which one will be used by reticulate.
py_function_wrapper() utility functions for
scaffolding R wrappers for Python functions.
py_last_error() function for retreiving last Python error.
Convert 0-dimension NumPy arrays (scalars) to single element R vectors
Convert "callable" Python objects to R functions
Automatically add Python bin directory to system PATH for consistent version usage in reticulate and calls to system
length() method for tuple objects
Enable specification of
__name__ for R functions converted to
Give priority to the first registered delay load module (previously the last registered module was given priority)
Add additional safety checks to detect use of NULL xptr objects (i.e. objects from a previous session). This should mean that S3 methods no longer need to check whether they are handling an xptr.
py_eval() function for evaluating simple Python statements.
local option to
behavior to return local execution dictionary (rather than a reference
to the main module).
PyImport_Import rather than
Added ability to customize mapping of Python classes to R classes via
as argument to
import() and the
on_error functions for
Scan customary root directories for virtualenv installations
[[ operator (zero-based to match
Python style indexing)
conda_* family of functions for using conda utilities from
Implement comparison operators (e.g.
>=, etc.) for Python objects
names() generic for Python objects
Improve performance for marshalling of large Python dictionaries and iterators that return large numbers of items.
str methods for Python List, Dict, and Tuple (to prevent
printing of very large collections via default
grepl() rather than
endsWith() for compatibility with R <= 3.2
inspect.getmro rather than
__bases__ for enumerating the base classes
of Python objects.
UNPROTECT issue detected by CRAN
Correct converstion of strings with Unicode characters on Windows
Fix incompatibility with system-wide Python installations on Windows
Fix issue with Python dictionary keys that shared names with
primitive R functions (don't check environment inheritance chain when looking for dictionary key objects by name).
convert parameter for modules with