通常はjupyter notebook
またはjupyter-notebook
またはipython notebook
ターミナルで、Jupyter Notebook Webサーバーをローカルで起動します(ブラウザーでURLを開きます)。 conda と conda environment を使用する場合、Jupyterノートブックを実行して、Pythonモジュールがconda環境にインストールされていますか?
どうやら thisisnotquitestraightforwardand多数ユーザー持っている類似トラブル 。
最も一般的なエラーメッセージは次のようです:conda環境にパッケージXYZをインストールした後my-env
実行できるimport XYZ
in a python console started in my-env
、ただしJupyterノートブックで同じコードを実行すると、ImportErrorが発生します。
この質問は何度も尋ねられましたが、答えるのに適した場所はありません。ほとんどのQ&AとGithubチケットは非常に乱雑なので、 ここで新しいQ&Aを始めましょう 。
免責事項:Ubuntuでのみテストされています。Windows/ Mac OSで何かが異なる場合はコメントしてください。
Jupyterは、kernelと呼ばれる別のプロセスでユーザーのコードを実行します。カーネルは、別のPythonインストール(別のconda環境またはvirtualenvまたはPython 2ではなくPython 3)または別の言語のインタープリター(例:JuliaまたはR)にすることができます。 。カーネルは、インタープリターと名前およびその他のパラメーターを指定することによって構成され( Jupyterのドキュメント を参照)、構成はシステム全体、アクティブな環境(またはvirtualenv)、またはユーザーごとに保存できます。静的に構成されたカーネルに加えて、_nb_conda_kernels
_を使用すると、ipykernel
がインストールされたconda環境ごとに個別のカーネルがJupyterノートブックで利用可能になります。
つまり、conda環境とJupyterの使用方法には3つのオプションがあります。
次のようなことをしてください:
_conda create -n my-conda-env # creates new virtual env
conda activate my-conda-env # activate environment in terminal
conda install jupyter # install jupyter + notebook
jupyter notebook # start server + kernel
_
Jupyterはconda環境に完全にインストールされます。さまざまなバージョンのJupyterをさまざまなconda環境で使用できますが、このオプションは少々やり過ぎかもしれません。カーネルを環境に含めるだけで十分です。これは、コードを実行するコンポーネントのラッピングPythonです。 Jupyterノートブックの残りの部分はエディターまたはビューアーと見なすことができ、これをすべての環境に個別にインストールしてすべての_env.yml
_ファイルに含める必要はありません。したがって、次の2つのオプションのいずれかをお勧めしますが、これが最も単純なオプションであり、間違いなく問題ありません。
次のようなことをしてください:
_conda create -n my-conda-env # creates new virtual env
conda activate my-conda-env # activate environment in terminal
conda install ipykernel # install Python kernel in new conda env
ipython kernel install --user --name=my-conda-env-kernel # configure Jupyter to use Python kernel
jupyter notebook # run jupyter from system
_
カーネルの名前とconda環境は互いに独立していますが、同様の名前を使用することは意味があるかもしれません。
Pythonカーネルのみがconda環境内で実行され、システムからのJupyterまたは別のconda環境が使用されます-conda環境にはインストールされません。 _ipython kernel install
_を呼び出すと、jupyterはconda環境をカーネルとして使用するように構成されます。詳細については、 Jupyterのドキュメント および IPythonのドキュメント を参照してください。ほとんどのLinuxインストールでは、この構成は_*.json
_内の_~/.local/share/jupyter/kernels/my-conda-env-kernel/kernel.json
_ファイルです。
_{
"argv": [
"/opt/miniconda3/envs/my-conda-env/bin/python",
"-m",
"ipykernel_launcher",
"-f",
"{connection_file}"
],
"display_name": "my-conda-env-kernel",
"language": "python"
}
_
パッケージ_nb_conda_kernels
_ をインストールすると、condaパッケージipykernel
または別のカーネル(R、Juliaなど)を含む各conda環境で、個別のカーネルが自動的に利用可能になります。
_conda activate my-conda-env # this is the environment for your project and code
conda install ipykernel
conda deactivate
conda activate base # could be also some other environment
conda install nb_conda_kernels
jupyter notebook
_
カーネル_Python [conda env:my-conda-env]
_を選択できるはずです。 _nb_conda_kernels
_はconda経由でのみ利用可能で、pipやaptなどの他のパッケージマネージャー経由では利用できないようです。
Linux/Macを使用している場合、コマンドラインでコマンドwhich
を使用すると、使用されているjupyterがわかります。オプション1(conda環境内からJupyterを実行している)を使用している場合は、conda環境から実行可能である必要があります。
_$ which jupyter
/opt/miniconda3/envs/my-conda-env/bin/jupyter
$ which jupyter-notebook # this might be different than 'which jupyter'! (see below)
/opt/miniconda3/envs/my-conda-env/bin/jupyter-notebook
_
ノートブック内では、Pythonがconda環境からのPythonパスを使用していることがわかります。
_[1] !which python
/opt/miniconda3/envs/my-conda-env/bin/python
[2] import sys; sys.executable
'/opt/miniconda3/envs/my-conda-env/bin/python'
['/home/my_user',
'/opt/miniconda3/envs/my-conda-env/lib/python37.Zip',
'/opt/miniconda3/envs/my-conda-env/lib/python3.7',
'/opt/miniconda3/envs/my-conda-env/lib/python3.7/lib-dynload',
'',
'/opt/miniconda3/envs/my-conda-env/lib/python3.7/site-packages',
'/opt/miniconda3/envs/my-conda-env/lib/python3.7/site-packages/IPython/extensions',
'/home/my_user/.ipython']
_
Jupyterはコマンド_jupyter-troubleshoot
_またはJupyterノートブックで提供します。
_!jupyter-troubleshoot
_
これにより、上記の出力やインストールされたライブラリなどを含めることに関する多くの役立つ情報が出力されます。 Jupyterのインストールに関する質問についてヘルプを求める場合は、バグレポートや質問でこの情報を提供することをお勧めします。
構成されているすべてのJupyterカーネルを一覧表示するには、次のコマンドを実行します。
_jupyter kernelspec list
_
注:症状は、ここで説明する問題に固有のものではありません。
症状:conda環境にインストールされている(ただしシステム全体にインストールされていない)モジュールのJupyterノートブックでImportErrorが発生するが、Python ターミナル
説明:conda環境(オプション1、上記を参照)内からjupyterノートブックを実行しようとしました。このconda環境用のカーネルの構成はありません(これはオプション2です)とnb_conda_kernelsはインストールされていません(オプション3)が、_which jupyter
_でそれが信じられたとしても、jupyterノートブックはconda環境に(完全に)インストールされていません。
GNU/Linuxでは、_which jupyter
_と入力して、Jupyterのどの実行可能ファイルが実行されているかを確認できます。
これは、おそらくJupyterがインストールされていないために、システムのJupyterが使用されていることを意味します。
_(my-conda-env) $ which jupyter-notebook
/usr/bin/jupyter
_
パスがconda環境のファイルを指している場合、JupyterはJupyter内から実行されます。
_(my-conda-env) $ which jupyter-notebook
/opt/miniconda3/envs/my-conda-env/bin/jupyter-notebook
_
Condaパッケージipykernel
がインストールされると、実行可能ファイルjupyter
が出荷されますが、実行可能ファイル_jupyter-notebook
_は出荷されないことに注意してください。つまり、_which jupyter
_はconda環境へのパスを返しますが、_jupyter notebook
_はシステムの_jupyter-nootebook
_を起動します( here も参照):
_ $ conda create -n my-conda-env
$ conda activate my-conda-env
$ conda install ipykernel
$ which jupyter # this looks good, but is misleading!
/opt/miniconda3/envs/my-conda-env/bin/jupyter
$ which jupyter-notebook # jupyter simply runs jupyter-notebook from system...
/usr/bin/jupyter-notebook
_
これは、_jupyter notebook
_が_jupyter-notebook
_を検索し、_/usr/bin/jupyter-notebook
_を検索して、 呼び出して 新しいPythonプロセスを開始するために発生します。 _/usr/bin/jupyter-notebook
_のシバンは_#!/usr/bin/python3
_であり、 動的ではありません _#!/usr/bin/env python
_。したがって、Pythonはなんとかconda環境から抜け出します。 jupyterがShebangを無効にする代わりに_python /usr/bin/jupyter-notebook
_を呼び出すことができると思いますが、システムのbinファイルと環境のpythonパスを混在させるとうまく機能しません。
解決策:conda環境内にjupyterノートブックをインストールします。
_ conda activate my-conda-env
conda install jupyter
jupyter notebook
_
注:症状は、ここで説明する問題に固有のものではありません。
症状:conda環境にインストールされている(ただしシステム全体にインストールされていない)モジュールのJupyterノートブックでImportErrorが発生するが、Python ターミナル
説明:通常、システムは、_/usr/bin/python3
_を使用するように構成されたpython3(表示名「Python 3」)と呼ばれるカーネルを提供します。 _/usr/share/jupyter/kernels/python3/kernel.json
_。これは通常、環境pythonバイナリ_/opt/miniconda3/envs/my-conda-env/bin/python
_を指すconda環境のカーネルによってオーバーライドされます。どちらもipykernel
パッケージによって生成されます( here および here を参照)。
_~/.local/share/jupyter/kernels/python3/kernel.json
_のユーザーカーネル仕様は、システム全体のカーネルおよび環境カーネルをオーバーライドする場合があります。環境カーネルが見つからないか、ユーザーカーネルが環境オプション1の外にあるpythonインストールを指している場合(環境へのjupyterのインストール)は失敗します。
この問題とバリアントの発生と説明については、 here 、 here 、 here および here 、 here と here を参照してください。
解決策:_jupyter kernelspec list
_を使用して、アクティブなカーネルの場所を一覧表示します。
_$ conda activate my-conda-env
$ jupyter kernelspec list
Available kernels:
python3 /opt/miniconda3/envs/my-conda-env/share/jupyter/kernels/python3
_
環境内のカーネルが見つからない場合は、アクティブ化された環境で_ipython kernel install --sys-prefix
_を使用して手動で作成できますが、_conda install ipykernel
_で環境が作成されているはずなので、インストールを確認することをお勧めします環境を再作成し、すべてのパッケージを再インストールしますか?)。
ユーザーのカーネル仕様が環境のカーネル仕様をブロックしている場合は、それを削除するか、_$PATH
_を使用する相対pythonパスを使用して、使用するpython
を特定できます。したがって、このようなものは完全にうまくいくはずです:
_$ cat ~/.local/share/jupyter/kernels/python3/kernel.json
{
"argv": [
"python",
"-m",
"ipykernel_launcher",
"-f",
"{connection_file}"
],
"display_name": "Python 3",
"language": "python"
}
_
症状:JupyterノートブックとPython端末のconda環境にインストールされている(システム全体にはインストールされていない)モジュールのImportError
説明:各端末には一連の環境変数があり、端末を閉じると失われます。 conda環境を使用するには、特定の環境変数を設定する必要があります。これは、_conda activate my-conda-env
_を使用してアクティブにすることによって行われます。 conda環境(オプション1)内からJupyterノートブックを実行しようとしたが、実行する前にconda環境をアクティブ化しなかった場合、システムのjupyterが実行される可能性があります。
ソリューション:Jupyterを実行する前にconda環境をアクティブ化します。
_ conda activate my-conda-env
jupyter notebook
_
症状:奇妙なことが起こっています。おそらく上記と同様の症状、例えばImportError
説明:オプション2を使用しようとした場合、つまり、カーネルの明示的な構成を使用してシステムからJupyterを実行し、conda環境内でJupyterカーネルを実行した場合、しかし、期待どおりに動作しません。構成が 何らかの方法で破損している可能性があります 。
解決策:_~/.local/share/jupyter/kernels/my-kernel-name/kernel.json
_の構成を確認し、間違いを手動で修正するか、ディレクトリ全体を削除して、上記のオプション2のコマンドを使用してディレクトリを再作成します。カーネル構成が見つからない場合は、_jupyter kernelspec list
_を実行します。
症状:不正なPythonバージョンのJupyterカーネルによるImportError または Python 2に関するその他の問題/ 3
説明:カーネル構成は、あらゆる種類の紛らわしい、誤解を招く影響を与える可能性があります。たとえば、デフォルトのPython 3カーネル構成では、Python 2で実行されているJupyterノートブックを起動できます。
_conda create -n my-conda-env
conda activate my-conda-env
conda install python=2
conda install jupyter
jupyter notebook
_
デフォルトのPython 3カーネル:
_$ cat ~/.local/share/jupyter/kernels/python3/kernel.json
{
"argv": [
"python",
"-m",
"ipykernel_launcher",
"-f",
"{connection_file}"
],
"display_name": "Python 3",
"language": "python"
}
_
Python 3カーネルで新しいJupyter Notebookを作成すると、Jupyterで「Python 3」が表示されている場合でも、conda環境のPython 2が使用されます。