私はある種の恐ろしい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カーネルで実行する環境を知るにはどうすればよいですか?
ありがとう!
これは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のカーネルにリセットされます。
はい、カーネルを再起動して、前の手順を再実行する必要があります。
@tschundlerのソリューションは、環境がすでに作成されている場合に完全に機能します。
仮想環境の作成時にデフォルトのカーネルを変更し、手動設定を避けたい場合は、condaコマンドの最後にjupyter
を追加するだけです。
conda create --name ENVNAME python=PYTHONVERSION jupyter
Ipythonまたはjupyterノートブックを使用すると、正しいカーネルが使用されます。
ここには簡単な方法もあります
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は、それ以降、そのノートブックに使用するカーネルを記憶します。
これは私のために働いた。 ソース
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"
}
私の場合、どういうわけかjupyterは仮想環境のpythonを「選択」できませんでした。そのため、~/.local/share/jupyter/kernels/{my_env_name}/kernel.json
を編集し、インタープリターにパスを追加する必要がありました
argv
キー。