---
title: "Install the Azure ML SDK for R"
date: "`r Sys.Date()`"
output: rmarkdown::html_vignette
vignette: >
  %\VignetteIndexEntry{Install the Azure ML SDK for R}
  %\VignetteEngine{knitr::rmarkdown}
  \use_package{UTF-8}
---

This article covers the step-by-step instructions for installing the Azure ML SDK for R.

You do not need run this if you are working on an Azure Machine Learning Compute Instance, as the compute instance already has the Azure ML SDK preinstalled.

## Install Conda

If you do not have Conda already installed on your machine, you will first need to install it, since the Azure ML R SDK uses **reticulate** to bind to the Python SDK. We recommend installing [Miniconda](https://docs.conda.io/en/latest/miniconda.html), which is a smaller, lightweight version of Anaconda. Choose the 64-bit binary for Python 3.5 or later.

## Install the **azuremlsdk** R package
You will need **remotes** to install **azuremlsdk** from the GitHub repo.
``` {r install_remotes, eval=FALSE}
install.packages('remotes')
``` 

Then, you can use the `install_github` function to install the package.
``` {r install_azuremlsdk, eval=FALSE}
remotes::install_cran('azuremlsdk', repos = 'https://cloud.r-project.org/')
```

If you are using R installed from CRAN, which comes with 32-bit and 64-bit binaries, you may need to specify the parameter `INSTALL_opts=c("--no-multiarch")` to only build for the current 64-bit architecture.
``` {r eval=FALSE}
remotes::install_cran('azuremlsdk', repos = 'https://cloud.r-project.org/', INSTALL_opts=c("--no-multiarch"))
```

## Install the Azure ML Python SDK
Lastly, use the **azuremlsdk** R library to install the Python SDK. By default, `azuremlsdk::install_azureml()` will install the [latest version of the Python SDK](https://pypi.org/project/azureml-sdk/) in a conda environment called `r-azureml` if reticulate < 1.14 or `r-reticulate` if reticulate ≥ 1.14.
``` {r install_pythonsdk, eval=FALSE}
azuremlsdk::install_azureml()
```

If you would like to override the default version, environment name, or Python version, you can pass in those arguments. If you would like to restart the R session after installation or delete the conda environment if it already exists and create a new environment, you can also do so: 
``` {r eval=FALSE}
azuremlsdk::install_azureml(version = NULL, 
                            custom_envname = "<your conda environment name>",
                            conda_python_version = "<desired python version>",
                            restart_session = TRUE,
                            remove_existing_env = TRUE)
```

## Test installation
You can confirm your installation worked by loading the library and successfully retrieving a run.
``` {r test_installation, eval=FALSE}
library(azuremlsdk)
get_current_run()
```

## Troubleshooting
-   In step 3 of the installation, if you get ssl errors on windows, it is due to an
outdated openssl binary. Install the latest openssl binaries from
[here](https://wiki.openssl.org/index.php/Binaries).

- If installation fails due to this error:

  ```R
  Error in strptime(xx, f, tz = tz) : 
    (converted from warning) unable to identify current timezone 'C':
  please set environment variable 'TZ'
  In R CMD INSTALL
  Error in i.p(...) : 
    (converted from warning) installation of package ‘C:/.../azureml_0.4.0.tar.gz’ had non-zero exit
    status
  ```
  
  You will need to set your time zone environment variable to GMT and restart the installation process.
  
  ```R
  Sys.setenv(TZ='GMT')
  ```

- If the following permission error occurs while installing in RStudio,
  change your RStudio session to administrator mode, and re-run the installation command.

  ```R
  Downloading GitHub repo Azure/azureml-sdk-for-r@master
  Skipping 2 packages ahead of CRAN: reticulate, rlang
  Running `R CMD build`...
  
  Error: (converted from warning) invalid package
  'C:/.../file2b441bf23631'
  In R CMD INSTALL
  Error in i.p(...) : 
    (converted from warning) installation of package
    ‘C:/.../file2b441bf23631’ had non-zero exit status
  In addition: Warning messages:
  1: In file(con, "r") :
    cannot open file 'C:...\file2b44144a540f': Permission denied
  2: In file(con, "r") :
    cannot open file 'C:...\file2b4463c21577': Permission denied
  ```
  