1

短縮版

renvvenvjupyterlab一緒に使用するシンプルでエレガントな方法は何IRkernelですか? 特に、renvルート ディレクトリにない jupyter ノートブックから自動的にアクティブ化する方法を教えてください。

ロングバージョン

私は「多言語」データ サイエンス スタイルを採用しています。つまり、python と R の両方を連携して使用します。今venvはスゴイ、renvスゴイ、jupyterlabスゴイので、それらをうまく組み合わせて使うにはどうすればいいのか模索中です。

私はほとんどそれを持っているので、おそらくいくつかのヒントでこのセットアップを完了することができます. ここが私の居場所です。

システム

クリーンな OS から始めて、システム レベルの要件 (R + renv および Python + venv) をインストールします。たとえば、Ubuntu では、おおよそ次のようになります。

# R
sudo apt install r-base
sudo R -e "install.packages('renv')"

# Python
sudo apt install python3.8
sudo apt install python3.8-venv

計画

jupyrenvここで、2 つのファイルを含むベアボーン プロジェクトを作成します。

jupyrenv/
├── DESCRIPTION
└── requirements.txt

DESCRIPTIONR の依存関係が含まれています。

Suggests:
    IRkernel,
    fortunes

requirements.txtPython の依存関係が含まれています。

jupyterlab

仮想環境を作成し、依存関係をインストールします (順序が重要です。R は python に従う必要があります)。

# Python
python3.8 -m venv venv
source venv/bin/activate
pip install -r requirements.txt

# R
R -e "renv::init(bare=TRUE)"
R -e "renv::install()"
R -e "IRkernel::installspec()"

これまでのところ非常にきれいです!

ジュピター

コマンド ラインから jupyter を起動すると、うまくいきます。

jupyter-lab

ここに画像の説明を入力

好きではないことは何ですか?

残念ながら、フォルダーを作成して (たとえばnotebooks)、そこで R ノートブックを起動すると、機能しません :(

[I 2022-02-23 19:07:24.628 ServerApp] Creating new directory in 
[I 2022-02-23 19:07:31.159 ServerApp] Creating new notebook in /notebooks
[I 2022-02-23 19:07:31.416 ServerApp] Kernel started: 0aa2c276-18dc-4511-b308-e78234fa71d4
Error in loadNamespace(name) : there is no package called ‘IRkernel’
Calls: :: ... loadNamespace -> withRestarts -> withOneRestart -> doWithOneRestart
Execution halted

修正を試みる

サブフォルダーからは使用されていないようですので、使用するプロセスをrenvヒントする必要があります。サブフォルダーに追加のファイルRを追加しようとしました:.Rprofilenotebooks

jupyrenv/
├── DESCRIPTION
├── requirements.txt
├── renv
├── venv
├── notebooks
│   ├── .Rprofile
│   └── Untitled.ipynb
├── .Rprofile
└── Untitled.ipynb

以下の内容で:

.Rprofile:

source("../renv/activate.R")

そして、それはある程度機能しますが、実際には機能しません。notebooksまず、ディレクトリにR ノートブックを作成しようとすると、新しい が作成されrenvます。

[I 2022-02-23 19:22:28.986 ServerApp] Creating new notebook in /notebooks
[I 2022-02-23 19:22:29.298 ServerApp] Kernel started: b40a88b3-b0bb-4839-af45-85811ec3073c
# Bootstrapping renv 0.15.2 --------------------------------------------------
* Downloading renv 0.15.2 ... OK (downloaded source)
* Installing renv 0.15.2 ... Done!
* Successfully installed and loaded renv 0.15.2.

その後、そのjupyterのインスタンスが機能し、使用できますが、再起動すると機能が停止し、欠落しているIRkernelエラーに戻ります:

[I 2022-02-23 19:24:58.912 ServerApp] Kernel started: 822d9372-47fd-43f5-8ac7-77895ef124dc
Error in loadNamespace(name) : there is no package called ‘IRkernel’
Calls: :: ... loadNamespace -> withRestarts -> withOneRestart -> doWithOneRestart

私は何が欠けていますか?

4

1 に答える 1

1

この質問をgithub リポジトリの問題として公開したところ、メンテナーが親切に回避策を提供してくれました。renvの内容は次のnotebooks/.Rprofileとおりです。

owd <- setwd(".."); source("renv/activate.R"); setwd(owd)

ブレンドします!

于 2022-02-24T20:06:08.760 に答える