- 対処法1:右クリックの「Codeを開く」を使わず、別のランチャーからVSCodeを開くと表示される
- 対処法2:
ipython kernel install
でカーネルを追加する - その他:Jupyterの拡張機能をダウングレードする(v2020.12.414227025では動くらしいが、あまりしたくない)
似たような現象の議論は以下で行われています。
https://github.com/microsoft/vscode-jupyter/issues/4011
どのような現象か
VSCode上でipynbファイルを開いたとき、以下のような画面になります。
venvで仮想環境を作ったので、ipynbで実行されるPythonを./venv/Scripts/python.exe
に変更したいです。
以下のように、VSCode画面右上の「Python 3.8.5 64-bit ('base': conda): idle」をクリックすると実行するPythonの環境を変更できますが、venv環境のpython.exe
が表示されず、設定できないという現象が発生します(手動で設定したいが、方法がわからない)。
この現象は、起きたり起きなかったりと再現性はなく、どういうルールで「Select a Kernel」に表示されるのかもわからない(自分で設定させてほしい)うえ、PCを再起動しても直るわけでもないので、 結構途方に暮れる現象です。
対処法1:右クリックの「Codeを開く」を使わず、別のランチャーからVSCodeを開くと表示される
VSCodeをタスクバーにピン留めしておいて、そこからVSCodeを起動すると、なぜか「Select a Kernel」で選択可能になっています。
タスクバーにピン留めした方は、一番上に「c:\Users\takey\Desktop\myspace\workspace\my-practice\qiskit_textbook_practice\venv\Scripts...」があるのがわかります。これを選択したかった。
ただ、根本的な解決になっていない気がする。
対処法2:ipython kernel install
でカーネルを追加する
Jupyterで複数カーネルを簡単に選択するための設定 - Qiita
# カーネルに追加 (venv)$ ipython kernel install --user --name=venv --display-name=venv
これを実行してVSCodeを再起動すると、「Select a Kernel」に「venv」という名前のカーネルが選択可能になります。ただし、--name
で指定した名前が被ると上書きしてしまうので、それに注意して追加しなければなりません。
私は仮想環境名をすべてvenvに統一しているのですが、この方法はいちいち名前を考えなきゃいけないというデメリットがある一方、Jupyterの暗黙的なルールで「Select a Kernel」に表示されるかされないかに対して、明示的に「追加」という操作を行えるのがメリットです。
# カーネルを表示 (venv)$ jupyter kernelspec list Available kernels: venv C:\Users\takey\AppData\Roaming\jupyter\kernels\venv # 削除 (venv)$ jupyter kernelspec uninstall venv
トラブルシューティング
対処法2でカーネルを追加したけど、Pythonのパスがおかしい。
たとえばipython kernel install --user --name=hoge_venv --display-name=hoge_venv
をして、hoge_venv
カーネルを作成したとします。
そのhoge_venv
環境のPythonがローカルの仮想環境であるvenv環境のパスではなく、たとえばcondaのPythonのパスになっていることがあります。
この場合、ipython kernel install
したときのipython
がconda環境のものを使っていることが原因と考えられます。
なので、仮想環境にpip install ipython
でipython
をインストールしてやればよいです。
対処法2でカーネルを追加したけど、「Python requires ipykernel to be installed.」ポップアップが出る
カーネルをhoge_venv
に切り替えて、ipynbファイルのセルを実行したとき、上記のサイトのように「Python 3.8.3 64-bit ('base': conda) requires ipykernel to be installed.」というポップアップがでることがあります。
「install」ボタンを押しても「Could not install ipykernel. If pip is not available, ...」というメッセージが表示され、インストールに失敗します。
これの意味不明なところは、私の場合、このときメインではPython3.7系を使っていたはずなのですが、「Python3.8.3 64-bit (...) requires ...」と表示されていました。どうやら一番上に表示されているカーネルを参照してしまっているようです。
これの直し方ですが、VSCodeのPython拡張機能を一旦アンインストールし、再インストールすれば直りました。
【追記】VSCodeを再起動したら再度このポップアップが出るようになりました。VSCodeを右クリックで開くのではなく、タスクバーにピン留めして、そこから起動するとポップアップが出なくなったので(意味不明)、とりあえずそれで運用しています。
(ちなみにVSCodeの設定は、VSCodeの再起動をしないと設定が反映されないことが多いので、なんか反映していないと思ったらこまめにVSCodeを再起動するとよいです。)