急いでる人向け
windowsでの使い捨てjupyter lab環境が欲しい人向けの方法です。
- https://github.com/akirayou/miniconda-portable-win/archive/main.zip をダウンロード
- 適当な場所に解凍(スペースや特殊文字を含まないディレクトリ推奨)
- INSTALL.batを実行(画面が閉じるまでまつ)容量1.3GBぐらい必要
- RUN_jupyter.bat を実行するとjupyter labが使える
- RUN_terminal.bat を実行するとcondaコマンドが叩けるので追加で必要なソフトはそちらから入れる
- アンインストールはフォルダごと削除するだけ
何をやってるの?
https://repo.anaconda.com/miniconda/Miniconda3-latest-Windows-x86_64.exe で公開されているMinicondaのインストーラは余り知られてないですが元から、ポータブルインストール用のオプションがあります。以下のオプションは/Sがwindowを出さずにインストールするサイレントモード、続くオプションたちが「マシン全体じゃなくて個人用としてイントール」「システムの環境変数Pathを弄らない」「他のアプリからPythonを使えるように登録したりしない」「windowsのプログラムとしてインストーラーを登録しない」という設定で、最後がインストール先ディレクトリの指定です。
/S /InstallationType=JustMe /AddToPath=0 /RegisterPython=0 /NoRegistry=1 /D=インストール先
後は普段通りcondaを使って様々なアプリをインストールするのですが、上の設定だとパスも通ってないし、conda initも実行されてないのでそのままでは走りません。なのでenv.batで環境変数をお膳立てしています。
SET CONDA_PATH=%~dp0miniconda
cd %~dp0
SET PATH=%CONDA_PATH%;%CONDA_PATH%\Scripts;%CONDA_PATH%\Library\bin;%CONDA_PATH%\condabin;%PATH%
call conda_hook.bat
call conda.bat activate base
パスを通してconda_hook.batをCALLして、各種環境変数やプロンプトを設定させています。ここまでくればcondaを使ってinstallし放題なのですが、BATファイルをcondaを使う時は特有のルールがあって、condaコマンドに全てcallを追加する必要があります。(コマンドラインから直接叩くときは不要)
ということでINSTALL.batでもこんな感じになっています。
call conda install -yc conda-forge jupyterlab-git ipywidgets widgetsnbextension jupyterlab pip
なお上の例はjupyter labにipywidgetsと gitプラグインを有効にする例です。後にpipやjupyterコマンドを叩いて追加インストール作業をしていますが、此方はcallは不要です。
例:INSTALL.bat抜粋
pip install compoundfiles ipython_blocking
jupyter lab clean
jupyter labextension install @jupyter-widgets/jupyterlab-manager
jupyter labextension install @pyviz/jupyterlab_pyviz
jupyter lab build
何かを起動するには?
jupyterを起動するには以下のようなバッチファイルを使っています。
call env.bat
jupyter lab
env.batを呼び出してconda環境を有効にしたら、あとはjupyterを起動するだけです。コマンドラインwindowを閉じれば、jupyterも閉じるのでjupyterに慣れてない人に使わせるにはちょうど良いです。
ちなみに、上で配布しているzipにあるRUN_jupyter.batではjupyter というディレクトリを作って、そこにデータを置くようにしています。予めjupyterディレクトリを作ってipynbファイルを置いておけば、相手方に試して欲しいファイルだけが見えるので混乱が少ないかと思います。
最後に
Dockerが流行ってるけど、pythonですむ程度の事ならポータブルなconda環境を渡すというのは十分有りな選択肢だと思います。今回はconda installで最新のパッケージを入れましたが、再現性が重要な場合は予めconda env exportで出力した内容を使ってconda create -fでバージョンを揃えて環境を再現するほうが良いかとは思います