会社でjupyter notebook をインストールしようとすると、pip install のコマンドがエラーになってしまう。
社内ネットワークの様な、インタネット未接続の環境でもjupyter notebook を使いたい。
オフライン環境でインストールするには、方法が2つ考えられます。
ライブラリをダウンロードしておいてオフラインでインストールする方法と、
オンライン環境でインストール済みのjupyter を作成して持ち込む方法です。
依存ライブラリを全部事前にダウンロードするとかでも対応できるようですが、
それなりにスキルが必要っぽいので、後者で。
Python Jupyter notebook のポータブル版を作成する
Contents
Python のダウンロード
埋め込み版のpython を使用します。

使用したいバージョンで探してダウンロード。「embeddable」がついているやつで。
Download Windowsembeddable package (64-bit)


Python の設定
フォルダの構造をこんな感じにして解凍したフォルダを配置。
└─Python_embed
├─Notebook
└─Python
└─python-3.11.0-embed-amd64 ←-- 解凍したフォルダ

解凍したフォルダの中身から、
「python<バージョン>.pth」を探してテキストエディタで開き、
import site のコメントアウトを外す。

これをやらないとpip が動かない。

pip の導入
get-pip.py をダウンロードして解凍したフォルダに配置。

右クリックして「名前をつけてリンク先を保存」


配置したフォルダ内でコマンドプロンプトを実行して、「python.exe get-pip.py」を実行する。
python.exe get-pip.py
※現時点ではまだ、インターネット接続が必要。

インターネット接続がない場合はエラーになります。

Jupyter lab、notebook のインストール
python.exe -m pip install jupyterlab

「PATH にこのフォルダを設定することを考えよう」という警告がめっちゃ出ますが、
起動時にバッチで処理するので気にしないでOK です。
しかもいっぱいで出ますが、同じパス(Scripts フォルダ)を指しています。

ノートブックをインストール
python.exe -m pip install notebook

これはアンインストールする。
python.exe -m pip uninstall jedi

起動用バッチの作成
Jyupter notebook 用のコンフィグファイルの作成
コンフィグファイルを以下のコマンドを実行して生成する。
cd Scripts
jupyter-notebook.exe --generate-config

起動フォルダ内に配置。
(ただし、起動バッチで場所を指定しています。)

起動用のバッチファイル作成
この段階で、python_embed フォルダがポータブルな環境になっています。
フォルダごとコピーして、これから作成する起動バッチを実行すれば、Jyupter が起動します。
起動するときに環境変数を指定して、
テンプファイルやら、何やらの生成ファイルとかが起動フォルダ内で完結するように設定します。

pip でインストールした時にPATH に入れるように提言されていたフォルダもSET でPATH に入れてます。

@echo off
::Execution folder path
::set cwdirpath=C:\PTC\python_embed\
set cwdirpath=%~dp0
::Relative path to the folder where the Python executable is stored
set pyintpath=%cwdirpath%python\python-3.11.3-embed-amd64\
set notebpath=%cwdirpath%notebook\
set usrpfpath=%cwdirpath%_user_profile\
set PYTHONHOME=
set PYTHONPATH=
set JUPYTER_CONFIG_DIR=%usrpfpath%jupyter
set IPYTHONDIR=%usrpfpath%ipython
set MPLCONFIGDIR=%usrpfpath%matplotlib
set LOCALAPPDATA=%usrpfpath%AppData\Local
set APPDATA=%usrpfpath%AppData\Roaming
::Add path to Scripts folder.
::Also added path to WEB Driver.
set PATH=%PATH%;%pyintpath%;%pyintpath%Scripts\;%cwdirpath%edgedriver_win64\
cd /d %notebpath%
call %pyintpath%python.exe ^
%pyintpath%Scripts\jupyter-lab.exe ^
--config=%cwdirpath%jupyter_notebook_config.py ^
--LabApp.user_settings_dir=%usrpfpath%jupyterlab\lab\user-settings ^
--LabApp.workspaces_dir=%usrpfpath%jupyterlab\lab\workspaces
バッチを実行すると、コマンドプロンプトが出てきて


seleniumを使う場合
python.exe -m pip install selenium
seleniumを使う場合はブラウザ・エンジンも同梱して、PATH に追加されるようにする。

参考:WebDriver を使用して Microsoft Edge を自動化する

呼び出せる。

ブラウザエンジンの入手先
Chorme:ChromeDriver
Jyupter が起動するときのブラウザ
既存のブラウザが実行される。

既定のアプリで指定した、edge が起動した。

jupyter_notebook_config.py ファイルに下記の記述を追記しておくと、、、
import os.path
import webbrowser
chrome_exe = "C:\Program Files\Google\Chrome\Application\chrome.exe"
if os.path.isfile(chrome_exe):
webbrowser.register("chrome", None, webbrowser.GenericBrowser(chrome_exe))
c.NotebookApp.browser = "chrome"
※「Chorme.exe =」にはその環境で動作しているChrome の実行ファイルを指定する。

Chorme が起動する。
Chorme.exe = のパスが間違っている場合は、既定のブラウザが起動すると思われる。

ハマり道
オフライン環境でwebdriver 実行時にエラーがでる。
でも、オンライン環境だと実行できる。
Error: reqwest::Error { kind: Request, url: Url { scheme: "https", cannot_be_a_base: false, username: "", password: None, host: Some(Domain("chromedriver.storage.googleapis.com")), port: None, path: "/LATEST_RELEASE_107", query: None, fragment: None }, source: hyper::Error(Connect, ConnectError("dns error", Os { code: 11001, kind: Uncategorized, message: "そのようなホストは不明です。" })) }
[I 2022-11-22 14:03:24.920 ServerApp] Saving file at /preference.ipynb
[W 2022-11-22 14:03:24.923 ServerApp] Notebook preference.ipynb is not trusted
一回オンラインで起動できれば、そのままオフライン環境に戻しても起動するが、環境が変わるとまた同じ現象が起きる。
起動できたときに何か設定ファイル的なものを保存している様子もなく、、、
いろいろと試して、WEBDriver へのパス指定をexe に直に指定すると、一回インターネット接続現象がおきるという事に気付く。
フォルダまでのパスに変更しところエラーが出なくなった。
WEB ドライバーエンジンのバージョンと、
使用しているブラウザのバージョンがあってないときのエラー。

SessionNotCreatedException: Message: session not created:
This version of Microsoft Edge WebDriver only supports Microsoft Edge version 114

同じリリースで近しいバージョンを使用する。
このドライバーって、ブラウザを操作するやつだから、バージョン合わせないと動かないという。

jupyter_notebook_config.py にて、
「c.ServerApp.webbrowser_open_new」が見当たらない。
多分、これ↓に替わった。
c.NotebookApp.webbrowser_open_new = 2
参考サイト
参考というか、、、答えですけど^^
プランとしては2通りあったんですが、ポータブル版を作成する方法にしました。
オフラインでpip を使用するのは、かなりの熟練度が要りそう。
USBメモリがあればどこでも使えるPython + JupyterLab環境の作り方