web-dev-qa-db-ja.com

特定のvirtualenvを使用してJupyterノートブック内でPythonスクリプトを実行します

Jupyterノートブック内から長時間実行されるPythonスクリプトを実行して、実行中に生成されたデータ構造をハッキングできるようにします。

スクリプトには多くの依存関係とコマンドライン引数があり、特定のvirtualenvで実行されます。指定したvirtualenv(Jupyterインストールとは異なる)からノートブック内でPythonスクリプトを対話的に実行することはできますか?

ありがとう!

50

私のために働いたものは次のとおりです(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

53
muon

ノートブックカーネルを他のノートブックで使用できるようにするもう少し簡単なソリューション。

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にディレクトリをコピーします。

43
singer

私はこのリンクが非常に有用であることがわかりました:

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オブジェクトが何をしているのか正確にはわかりませんが、害はないようです。

13
edhodapp

documentation に基づいて、それは本当に簡単です

IPythonノートブックにvirtualenvを使用できます。次の手順を実行します。実際には手順1は不要です。source ~/path-to-your-virtualenv/を使用してvirtualenvをアクティブにしてください。

  1. Ipythonカーネルモジュールをvirtualenvにインストールします

    workon my-virtualenv-name#まだpip install ipykernelを実行していない場合は、virtualenvをアクティブにします

  2. 最も重要なステップ)次に、カーネルの「自己インストール」スクリプトを実行します。

    python -m ipykernel install --user --name = my-virtualenv-name必要に応じて--nameパラメーターを置き換えます。

  3. これで、IPythonノートブックメニューでカーネルを確認できるようになります:Kernel -> Change kernel(リストに表示される前にページを更新する必要がある場合があります)。 IPythonは、それ以降、そのノートブックに使用するカーネルを記憶します。

8
Hamed MP

@singerのソリューションは私にとってはうまくいきませんでした。うまくいったのは次のとおりです。

. /path/to/virtualenv/.venv/bin/activate
python -m ipykernel install --user --name .venv --display-name .venv

リファレンス: 異なる環境のカーネル (公式ドキュメント)

5
A T

nb_candaは便利です:

conda install nb_conda

そのため、conda仮想環境で独自のpythonカーネルを作成および選択し、venvでパッケージを管理できます。

スクリーンショット

リストアイテム

Screenshot

conda環境マネージャーjupyterノートブックの[Conda]タブでは、ノートブック内から直接環境を管理できます。

カーネルの変更[カーネル]メニューの[カーネルの変更]オプションを使用して、ノートブックを実行するカーネルを選択することもできます。

1
Jigang Hua