インターネット接続なしで Python パッケージをインストールする
接続可能なマシンで Python パッケージをダウンロードして転送し、インターネットに接続できない環境へインストールする方法を解説します。
インターネットに接続できないマシンへ Python パッケージをインストールするには、別のマシンでパッケージと依存関係をダウンロードし、オフライン環境へ転送します。この作業は 3 つのステップで行います。
オンライン環境でパッケージをダウンロードする
まず、インターネットに接続できる環境で pip download コマンドを使い、必要な Python パッケージをダウンロードします。
pip install boto3pip freeze > requirements.txtpip download --dest packages -r requirements.txtパッケージとその依存関係が packages ディレクトリに保存されます。
パッケージをオフライン環境へ転送する
ダウンロードしたパッケージをアーカイブにまとめ、scp などの安全なツールで対象環境へ転送します。
tar cvzf packages.gz ./packages# Transfer the archive to the offline environmentオフライン環境でパッケージをインストールする
オフライン環境でアーカイブを展開し、--find-links と --no-index を指定して pip install を実行します。
tar xvzf packages.gzpip install -r requirements.txt --find-links packages --no-index--find-links オプションはパッケージが格納されているローカルディレクトリを指定し、--no-index は pip が PyPI のインデックスへアクセスしようとするのを防ぎます。
まとめ
pip download で必要な配布物を取得し、packages ディレクトリを転送してから、--find-links と --no-index を指定してインストールします。インストール中にオフライン環境からネットワークへ接続する必要はありません。
--find-links はローカルの packages ディレクトリを検索対象に追加し、--no-index は PyPI への問い合わせを無効にします。
デフォルトの pip download は、実行元のマシンに合う配布物を解決します。オンライン環境とオフライン環境が異なる場合は、--platform、--python-version、--implementation と --only-binary=:all: を指定し、オフライン環境で利用できるホイールを取得してください。
Related posts
Python で OPC UA の変数ノードを監視する
opcua-asyncio を使って OPC UA の変数ノードを購読し、ポーリングではなくサーバーからの通知で変更を処理します。
Tesseract と Pytesseract による日本語 PDF の OCR 処理
Tesseract OCR v4 と pytesseract を使って PDF から日本語テキストを抽出し、出力を整えるための正規化処理も行います。
EC2 上で Proxy.py を軽量 HTTP プロキシとして動かす
認証機構を持たない Proxy.py を EC2 インスタンス上で動かし、SSH トンネル経由で安全にアクセスします。
保守性とテストしやすさのための依存性注入
密結合な TypeScript クラスを、給与計算、システムクロック、Amazon SES のメーラーを注入する構成へリファクタリングします。
Jasmine でモックオブジェクトのプロパティをスパイする
モックオブジェクトのプロパティをスパイする際に発生する Jasmine の "already been spied upon" エラーを、Object.getOwnPropertyDescriptor で回避する方法を解説します。
