如何将 Conda 环境与 RStudio Server 一起使用?

How can I use Conda environments with RStudio Server?

对于我的数据科学项目,我使用 conda 来跟踪所有已安装的包。

> conda create -n my_project R=3.4.1 r-tidyverse
> conda activate my_project
> which R 
/storage/apps/anaconda3/envs/my_project/bin/R
> R --version
R version 3.4.1 (2017-06-30) -- "Single Candle"

如何在 rstudio-server 中使用 Conda 环境的 R? 我知道 rsession-which-r 配置选项,但我无法轻松地在环境之间切换。

我创建了一个 GitHub 存储库,其中包含两个脚本,允许您在 Conda 环境中以非守护模式启动 Rstudio 服务器:rstudio-server-conda.

工作原理:

你可以在非守护模式下启动 rstudio-server(类似于 jupyter notebook) 康达环境。

> conda activate my_project
> /usr/lib/rstudio-server/bin/rserver \
   --server-daemonize=0 \
   --www-port 8787 \
   --rsession-which-r=$(which R) \
   --rsession-ld-library-path=$CONDA_PREFIX/lib

为避免库路径出现其他问题,rsession 还需要在 Conda 环境中 运行。这是通过将 rsession 包装到 rsession.sh 脚本中来实现的。包装的 rsession 可执行文件的路径可以作为命令行参数传递给 rserver。

rserver # ...
    --rsession-path=rsession.sh

最后,当使用多个用户时,必须为每个用户生成唯一的 secret-cookie-key。秘密 cookie 密钥的路径可以作为命令行参数传递给 rserver。

uuid > /tmp/rstudio-server/${USER}_secure-cookie-key
rserver # ...
   --secure-cookie-key-file /tmp/rstudio-server/${USER}_secure-cookie-key