web-dev-qa-db-ja.com

異なる環境でカーネルを実行しているjupyterノートブック

私はある種の恐ろしいvirtualenvの混乱に没頭しました。助けて?!

condaで環境を管理します。最近まで、私はpython2 jupyterノートブックカーネルしか持っていませんでしたが、21世紀に足を踏み入れて叫ぶことに決め、python3カーネルをインストールしました。どうやったか忘れてしまいました。

メイン(anaconda)pythonのデフォルトは2.7です。

だからここに、私は陽気に新しいpython3カーネル内から美しいスープを使用しようとしていますが、パッケージを見つけている環境に到達するために何もできないようです。Viz(すべてノートブックから):

from bs4 import BeautifulSoup 

-> ImportError: No module named 'bs4'

わかりました、大丈夫、シェルマジックを使用してインストールします。右?右?

! pip install bs4

--> Collecting bs4
  Downloading bs4-0.0.1.tar.gz
Requirement already satisfied (use --upgrade to upgrade): beautifulsoup4 in /Users/[MY-USER]/anaconda/lib/python2.7/site-packages (from bs4)
[...]
Successfully built bs4
Installing collected packages: bs4
Successfully installed bs4-0.0.1

from bs4 import BeautifulSoup 

-> ImportError: No module named 'bs4'

大野。 python3カーネルを実行しているのに、2.7環境にいると思いますか?それはしません。

! conda info --envs
--> # conda environments:
#
flaskenv                 /Users/[MY-USER]/anaconda/envs/flaskenv
mesa                     /Users/[MY-USER]/anaconda/envs/mesa
py35                     /Users/[MY-USER]/anaconda/envs/py35
root                  *  /Users/[MY-USER]/anaconda

はい、修正できます。それらの1つは3.5環境です。

! source activate py35
--> prepending /Users/[MY-USER]/anaconda/envs/py35/bin to PATH

! conda install beautifulsoup4
--> Fetching package metadata .......
Solving package specifications: ..........

# All requested packages already installed.
# packages in environment at /Users/[MY-USER]/anaconda:
#
beautifulsoup4            4.4.1                    py27_0  

について...

! pip install bs4
--> Requirement already satisfied (use --upgrade to upgrade): bs4 in /Users/[MY-USER]/anaconda/lib/python2.7/site-packages

もっと懸念...

from bs4 import BeautifulSoup 

-> ImportError: No module named 'bs4'

ああ!!! headdeskこれを修正するためにカーネルを強制終了する必要がありますか(そして少し作業を再実行します)?カーネルを強制終了しても機能しますか? jupyterカーネルで実行する環境を知るにはどうすればよいですか?

ありがとう!

38
Paul Gowder

これはipython/Jupyterのトリッキーな部分です。利用可能なカーネルのセットは、jupyter Notebookを起動したときのvirtualenvとは無関係です。秘Theは、jupyterに対して一意に識別したい環境でipykernelパッケージをセットアップすることです。 複数のipykernelに関するドキュメント から、

source activate ENVNAME
pip install ipykernel
python -m ipykernel install --user --name ENVNAME --display-name "Python (whatever you want to call it)"

単一のPython 3カーネルのみが必要な場合は、conda環境からpython -m ipykernel install --userを使用するだけで、デフォルトのpythonがvirtualenvのカーネルにリセットされます。

はい、カーネルを再起動して、前の手順を再実行する必要があります。

関連項目 IPython NotebookでPython 2.xとPython 3.xの両方を使用

106
tschundler

@tschundlerのソリューションは、環境がすでに作成されている場合に完全に機能します。

仮想環境の作成時にデフォルトのカーネルを変更し、手動設定を避けたい場合は、condaコマンドの最後にjupyterを追加するだけです。

conda create --name ENVNAME python=PYTHONVERSION jupyter

Ipythonまたはjupyterノートブックを使用すると、正しいカーネルが使用されます。

7

ここには簡単な方法もあります

workon my-virtualenv-name  # activate your virtualenv, if you haven't already
pip install tornado==4.5.3
pip install ipykernel==4.8.2

これで、IPythonノートブックメニューにカーネルが表示されます。カーネル->カーネルを変更して、カーネルに切り替えることができます(リストに表示される前にページを更新する必要がある場合があります)。 IPythonは、それ以降、そのノートブックに使用するカーネルを記憶します。

これは私のために働いた。 ソース

1
Rakend Dubba
pip install --user ipykernel
python -m ipykernel install --user --name=myenv

Output
Installed kernelspec myenv in /home/user/.local/share/jupyter/kernels/myenv

上記のディレクトリに移動してkernel.jsonを開きます

{
 "argv": [
  "/home/user/anaconda3/envs/myenv/bin/python", # path to your virtual environment python
  "-m",
  "ipykernel_launcher",
  "-f",
  "{connection_file}"
 ],
 "display_name": "myenv",
 "language": "python"
}
0
vishal

私の場合、どういうわけかjupyterは仮想環境のpythonを「選択」できませんでした。そのため、~/.local/share/jupyter/kernels/{my_env_name}/kernel.jsonを編集し、インタープリターにパスを追加する必要がありました

argvキー。

0
markroxor