Jupyterノートブック内から長時間実行されるPythonスクリプトを実行して、実行中に生成されたデータ構造をハッキングできるようにします。
スクリプトには多くの依存関係とコマンドライン引数があり、特定のvirtualenvで実行されます。指定したvirtualenv(Jupyterインストールとは異なる)からノートブック内でPythonスクリプトを対話的に実行することはできますか?
ありがとう!
私のために働いたものは次のとおりです(conda
python以外):(MacOS、pythonの作成バージョン。システムpythonで作業している場合、各コマンドの前にSudo
を追加する必要があります)
最初にvirtualenvをアクティブにします
新たに開始する場合、たとえば、virtualenvwrapperを使用できます
$pip install virtualenvwrapper
$mkvirtualenv -p python2 py2env
$workon py2env
# This will activate virtualenv
(py2env)$
# Then install jupyter within the active virtualenv
(py2env)$ pip install jupyter
# jupyter comes with ipykernel, but somehow you manage to get an error due to ipykernel, then for reference ipykernel package can be installed using:
(py2env)$ pip install ipykernel
次に、カーネルを設定します
(py2env)$ python -m ipykernel install --user --name py2env --display-name "Python2 (py2env)"
その後、jupyter Notebookを起動します(このステップではvenvをアクティブにする必要はありません)
(py2env)$ jupyter notebook
# or
#$ jupyter notebook
jupyterノートブックのドロップダウンメニューで:Kernel >> Change Kernel >> <list of kernels>
Python2 (py2env)
カーネルが表示されます
また、これにより、カーネルのpythonバージョンを簡単に識別し、どちらかのサイドバイサイドを維持できます。
詳細ドキュメントへのリンクはこちら http://ipython.readthedocs.io/en/stable/install/kernel_install.html
ノートブックカーネルを他のノートブックで使用できるようにするもう少し簡単なソリューション。
Linux + virtualenv + virtualenvwrapperを使用しています。別のセットアップを使用している場合は、いくつかのコマンドを適切なものに変更しますが、アイデアは理解できるはずです。
mkvirtualenv jupyter2
workon jupyter2
(jupyter2) pip install jupyter
(jupyter2) ipython kernel install --name "jupyter2_Python_2" --user
最後のコマンドは~/.local/share/jupyter/kernels/jupyter2\ python\ 2/
ディレクトリを作成します
3のための同じもの
mkvirtualenv -p /usr/bin/python3 jupyter3
// this uses python3 as default python in virtualenv
workon jupyter3
(jupyter3) pip install jupyter
(jupyter3) ipython kernel install --name "jupyter3_Python_3" --user
完了したら、jupyterを起動するためにどのenvを使用していても、両方のカーネルが表示されます。 ~/.local/share/jupyter/kernels/
でカーネルへのリンクを直接削除できます。場所を指定するには、ipython kernel install (--help)
にオプションを提供するか、1つのノートブックのみから複数のケネルを実行する場合は、~/.local/share/jupyter/kernels/
から~/envs/jupyter3/share/jupyter
にディレクトリをコピーします。
私はこのリンクが非常に有用であることがわかりました:
https://ocefpaf.github.io/python4oceanographers/blog/2014/09/01/ipython_kernel/
必ずpypyterをvirtualenvにpipインストールしてください。リンクが後で消えた場合の要点は次のとおりです。
新しいカーネルを作成する必要があります。カーネルはJSONファイルで指定します。カーネルは通常~/.ipython/kernels
にあります。 virtualenvの名前でディレクトリを作成し、その中にkernel.jsonファイルを作成します。たとえば、私のパスの1つは~./ipython/kernels/datamanip/kernel.json
のようになります
Kernel.jsonファイルは次のようになります。
{
"display_name": "Data Manipulation (Python2)",
"language": "python",
"codemirror_mode": {
"version": 3,
"name":"ipython"
},
"argv": [
"/Users/ed/.virtualenvs/datamanip/bin/python",
"-c",
"from IPython.kernel.zmq.kernelapp import main; main()",
"-f",
"{connection_file}"
]
}
Codemirror_modeオブジェクトが何をしているのか正確にはわかりませんが、害はないようです。
documentation に基づいて、それは本当に簡単です
IPythonノートブックにvirtualenvを使用できます。次の手順を実行します。実際には手順1は不要です。source ~/path-to-your-virtualenv/
を使用してvirtualenvをアクティブにしてください。
Ipythonカーネルモジュールをvirtualenvにインストールします
workon my-virtualenv-name#まだpip install ipykernelを実行していない場合は、virtualenvをアクティブにします
(最も重要なステップ)次に、カーネルの「自己インストール」スクリプトを実行します。
python -m ipykernel install --user --name = my-virtualenv-name必要に応じて--nameパラメーターを置き換えます。
これで、IPythonノートブックメニューでカーネルを確認できるようになります:Kernel -> Change kernel
(リストに表示される前にページを更新する必要がある場合があります)。 IPythonは、それ以降、そのノートブックに使用するカーネルを記憶します。
@singerのソリューションは私にとってはうまくいきませんでした。うまくいったのは次のとおりです。
. /path/to/virtualenv/.venv/bin/activate
python -m ipykernel install --user --name .venv --display-name .venv
リファレンス: 異なる環境のカーネル (公式ドキュメント)