psa*_*rka 3 python r rprofile jupyter-notebook renv
renv和venv一起使用的简单而优雅的方式是什么jupyterlab?IRkernel特别是,如何renv从不在根目录的jupyter笔记本自动激活?
我正在拥抱“多语言”数据科学风格,这意味着同时使用 python 和 R。现在venv太棒了,renv太棒了,jupyterlab太棒了,所以我试图找出将它们一起使用的巧妙方法。
我快要完成了,所以可能一些提示就足以完成这个设置。这就是我现在所在的地方。
\n从干净的操作系统开始,并安装系统级要求:R + renv 和 Python + venv。例如在 Ubuntu 上,它大约是这样的:
\n# R\nsudo apt install r-base\nsudo R -e "install.packages(\'renv\')"\n\n# Python\nsudo apt install python3.8\nsudo apt install python3.8-venv\nRun Code Online (Sandbox Code Playgroud)\n现在创建一个包含两个文件的基本项目jupyrenv:
jupyrenv/\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 DESCRIPTION\n\xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 requirements.txt\nRun Code Online (Sandbox Code Playgroud)\nDESCRIPTION包含 R 依赖项:
Suggests:\n IRkernel,\n fortunes\nRun Code Online (Sandbox Code Playgroud)\nrequirements.txt包含 python 依赖项:
jupyterlab\nRun Code Online (Sandbox Code Playgroud)\n创建虚拟环境并安装依赖项(顺序很重要,R 必须遵循 python):
\njupyrenv/\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 DESCRIPTION\n\xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 requirements.txt\nRun Code Online (Sandbox Code Playgroud)\n到目前为止非常整洁!
\n从命令行启动 jupyter 并庆幸,它有效了!
\njupyter-lab\nRun Code Online (Sandbox Code Playgroud)\n\n不幸的是,如果我创建一个文件夹(例如notebooks)并在那里启动 R 笔记本,它\n不起作用:(
[I 2022-02-23 19:07:24.628 ServerApp] Creating new directory in \n[I 2022-02-23 19:07:31.159 ServerApp] Creating new notebook in /notebooks\n[I 2022-02-23 19:07:31.416 ServerApp] Kernel started: 0aa2c276-18dc-4511-b308-e78234fa71d4\nError in loadNamespace(name) : there is no package called \xe2\x80\x98IRkernel\xe2\x80\x99\nCalls: :: ... loadNamespace -> withRestarts -> withOneRestart -> doWithOneRestart\nExecution halted\nRun Code Online (Sandbox Code Playgroud)\n似乎renv没有从子文件夹中使用它,因此我们需要提示进程R使用它。我尝试在子文件夹中添加一个额外的.Rprofile文件notebooks:
jupyrenv/\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 DESCRIPTION\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 requirements.txt\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 renv\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 venv\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 notebooks\n\xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 .Rprofile\n\xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 Untitled.ipynb\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 .Rprofile\n\xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 Untitled.ipynb\nRun Code Online (Sandbox Code Playgroud)\n包含以下内容:
\n.Rprofile:
source("../renv/activate.R")\nRun Code Online (Sandbox Code Playgroud)\n它确实有效,但不是真的。首先,当尝试在notebooks目录中创建 R 笔记本时,它会创建一个新的renv:
[I 2022-02-23 19:22:28.986 ServerApp] Creating new notebook in /notebooks\n[I 2022-02-23 19:22:29.298 ServerApp] Kernel started: b40a88b3-b0bb-4839-af45-85811ec3073c\n# Bootstrapping renv 0.15.2 --------------------------------------------------\n* Downloading renv 0.15.2 ... OK (downloaded source)\n* Installing renv 0.15.2 ... Done!\n* Successfully installed and loaded renv 0.15.2.\nRun Code Online (Sandbox Code Playgroud)\n然后那个 jupyter 实例就可以工作了,我可以使用它,但是如果我重新启动,它就会停止工作并返回到丢失的错误IRkernel:
[I 2022-02-23 19:24:58.912 ServerApp] Kernel started: 822d9372-47fd-43f5-8ac7-77895ef124dc\nError in loadNamespace(name) : there is no package called \xe2\x80\x98IRkernel\xe2\x80\x99\nCalls: :: ... loadNamespace -> withRestarts -> withOneRestart -> doWithOneRestart\nRun Code Online (Sandbox Code Playgroud)\n我缺少什么?
\n我在github 存储库中将这个问题作为一个问题renv打开,维护者友好地提供了一个解决方法。其内容notebooks/.Rprofile应如下:
owd <- setwd(".."); source("renv/activate.R"); setwd(owd)
Run Code Online (Sandbox Code Playgroud)
它融合了!
| 归档时间: |
|
| 查看次数: |
866 次 |
| 最近记录: |