🌯

ryeで作成したPythonカーネルにVS CodeのJupyterで接続する

2023/11/19に公開

はじめに

rye で Python 環境を作成して VS Code の Jupyter で接続する際、同一ワークスペースに .venv がある場合は問題なくカーネルを選択できたのですが、 異なるワークスペースからカーネルの選択ができませんでした。poetry+pyenv ではこのようなことがなかっただけに困りました。

本記事では、対処方法を紹介します。

筆者の実行環境

  • Windows 11
  • Visual Studio Code 1.84.2
    • 使用する拡張機能: Python, Jupyter
    • 表示言語は English
  • rye 0.15.2
  • PowerShell 5.1

手順

結論を言ってしまうと、Jupyter サーバーを起動し、そこに接続する方法で解決しました。

Python 環境作成と同一ワークスペースでのカーネル接続

  1. rye で Python 環境を作成し、 VS Code を開く

    # 環境初期化
    rye init python-env
    cd python-env
    # bashやzsh等は New-Item を touch に読み替える
    New-Item test.ipynb
    # VS Code の Jupyter で使用するパッケージを追加
    rye add ipykernel
    rye sync
    # VS Code を開く
    code .
    
  2. Python インタープリターの選択

    1. src/python_env/__init__.py を開く
    2. コマンドパレットを開く(Ctrl+P or F1)
    3. 「Python: Select Interpreter」を選択
    4. 作成した Python を入力 .venv\Scripts\python.exe
  3. カーネルに接続して動作確認

    1. test.ipynb を開く
    2. コマンドパレットを開く(Ctrl+P or F1)
    3. 「Notebook: Select Notebook Kernel」
    4. Select Another Kernel... > Python Environments...
    5. .venv\Scripts\python.exe を一覧から選択
    6. セルにprint('hello')を入力して実行できることを確認

異なるワークスペースでのカーネル接続

  1. ワークスペースを作成し、VS Code を開く

    mkdir work
    cd work
    # bashやzsh等は New-Item を touch に読み替える
    New-Item test.py
    New-Item test.ipynb
    code .
    
  2. Python インタープリターの選択(上記と同様)

    1. src/python_env/__init__.py を開く
    2. コマンドパレットを開く(Ctrl+P or F1)
    3. 「Python: Select Interpreter」を選択
    4. 作成した Python を入力 例)C:\path\to\python-env\.venv\Scripts\python.exe
  3. カーネルに接続しようとするができないことを確認

    1. test.ipynb を開く
    2. コマンドパレットを開く(Ctrl+P or F1)
    3. 「Notebook: Select Notebook Kernel」
    4. Select Another Kernel... > Python Environments...
    5. C:\path\to\python-env\.venv\Scripts\python.exe が一覧になく、カーネルの選択ができない
  4. Jupyter のインストールとサーバー起動

    # jupyter インストール
    cd C:\path\to\python-env
    rye add notebook
    rye sync
    # jupyter サーバーの起動
    # mytoken は任意の文字列とする。指定しない場合は長~いトークン文字列が生成される
    .venv\Scripts\python.exe -m jupyter notebook --no-browser --NotebookApp.allow_origin='*' --NotebookApp.ip='0.0.0.0' --NotebookApp.token=mytoken
    
  5. 今度こそカーネルに接続

    1. test.ipynb を開く
    2. コマンドパレットを開く(Ctrl+P or F1)
    3. 「Notebook: Select Notebook Kernel」
    4. Select Another Kernel... > Existing Jupyter Server... > Enter the URL of the running Jupyter Server...
    5. http://127.0.0.1:8888/?token=mytoken を入力(mytoken は指定したトークンか生成されたトークン)
    6. 表示名を入力(local とか main-env とかわかりやすい命名をしておく)
    7. セルにprint('hello')を入力して実行できることを確認

試したがうまくいかなかったこと

拡張機能の再インストール

rye とは関係なく、カーネルが選択できない不具合について、Python, Jupyter を再インストールすると解決するというのを見たので試しましたが、解決しませんでした。

pip をインストール

rye で作成した Python 環境には pip がないため、これが悪さをしているのではと考えましたが、解決しませんでした。

cd C:\path\to\python-env
rye add pip
rye sync

参考

最後に

  • 本記事では rye で作成した Python カーネルに、同一ワークスペースから接続する方法、異なるワークスペースから接続する際の問題の対処方法を説明しました。
    • 複数ワークスペース共通の Python カーネルを作成する際などに役立つかと思います。
  • 参考になった方は♡ボタンを押していただけると幸いです。
  • また、より良い解決方法があれば教えてください!

Discussion