みなさん、こんにちは。
Pythonで開発をしている際に、こんな経験はありませんか?
「プロジェクトで使っているPython環境を別のPCにそっくりそのまま移行したい!」
昨今はDockerコンテナで一発環境構築というのがトレンドですが、新しくPCをセットアップしたり、オフライン環境で作業したりする際、既存の環境をまるごとコピーできたら便利ですよね。
でも、安易にsite-packages
フォルダをコピーするだけでは、実はうまくいかないことが多いのです。今回は、その理由と、確実にPython環境を移行するための手順を解説します!
なぜsite-packages
のコピーだけではダメなの?
「Pythonのパッケージは全部site-packages
に入っているんだから、これをコピーすればOKじゃないの?」と思うかもしれません。しかし、単純なコピーでは以下の問題が発生します。
- 依存関係の欠如
- Pythonのパッケージは、OSのシステムライブラリ(DLLなど)に依存していることがあります。特にNumPyやPandasのような科学技術計算系のライブラリは、C言語などで書かれたコンポーネントを含んでいるため、単純にファイルをコピーしただけでは、必要なライブラリが不足して動作しません。
- パスの問題
- 一部のパッケージは、インストール先の絶対パスや環境変数を参照しています。コピー先のPCでパスが変わってしまうと、正しくモジュールを読み込めず、エラーの原因になります。
- コンパイル済みモジュールの問題
- Pythonのパッケージの中には、インストール時にPCの環境に合わせてコンパイルされるものがあります。例えば、WindowsとLinuxではコンパイルの仕組みが異なります。そのため、別の環境でコンパイルされたモジュールをそのままコピーしても、互換性の問題で動かない可能性があります。
これらの問題を回避し、確実に環境を移行するには、正しい手順を踏むことが重要です。
Python環境を移行する3つのステップ
ここからが本題です。Python環境を安全に移行するための、おすすめの手順をご紹介します。この手順はWindowsでもLinuxでも同じように応用できますよ。
ステップ1 – 現在の環境のパッケージリストを書き出す
まずは、移行元のPCで現在インストールされているパッケージのリストをrequirements.txtというファイルに書き出します。
pip freeze > requirements.txt
このコマンドを実行すると、パッケージ名とバージョンが正確に記録されたファイルが生成されます。これが、移行先の環境を再現するための設計図になります。
ステップ2 – オフライン環境用にパッケージをダウンロードする
次に、ステップ1で作成したrequirements.txtを元に、パッケージ本体をオフラインでもインストールできるようにダウンロードします。
pip download -d ./offline_packages -r requirements.txt
このコマンドを実行すると、カレントディレクトリにoffline_packages
というフォルダが作成され、その中に必要なすべてのパッケージファイル(.whlや.tar.gzなど)がダウンロードされます。
offline_packages
フォルダとrequirements.txt
を、移行先のPCにコピーしましょう。USBメモリなどを使って持ち運ぶのが手軽でおすすめです。
ステップ3 – 新しいPCでPythonをセットアップする
いよいよ移行先のPCでの作業です。
まず、移行元のPCと同じバージョンのPython実行環境をインストールしてください。Pythonのバージョンが異なると、パッケージの互換性が失われることがあるので、ここは非常に重要です。
新しいPCにもPythonをインストールしたら、以下のコマンドを実行してパッケージをインストールします。
pip install --no-index --find-links=./offline_packages -r requirements.txt
--no-index
オプションは、PyPI(Python Package Index)にアクセスせず、オフラインでインストールすることを意味します。--find-links
オプションで、先ほどダウンロードしたパッケージが保存されているフォルダを指定することで、ローカルからパッケージを読み込んでインストールしてくれます。
【OS別】もっと手軽に!スクリプトファイルを作成しよう
インストール作業をより簡単にするために、スクリプトファイルを作成すると便利です。
Windowsの場合 – バッチファイル
メモ帳を開いて、以下の1行を記述し、「install_packages.bat」などの名前で保存します。
pip install --no-index --find-links=./offline_packages -r requirements.txt
このバッチファイルと、ダウンロードしたoffline_packages
フォルダ、requirements.txt
を同じ場所に置いて、バッチファイルをダブルクリックすれば、自動的にインストールが始まります。
注意点
- 管理者権限
- システム全体にPythonをインストールしている場合は、バッチファイルを右クリックして「管理者として実行」してください。
- 文字コード
- バッチファイルの文字コードは「ANSI」または「UTF-8(BOM付き)」に設定しましょう。
Linuxの場合 – シェルスクリプト
同様に、テキストエディタで以下の内容を記述し、「install_packages.sh」などの名前で保存します。
#!/bin/bash
pip install --no-index --find-links=./offline_packages -r requirements.txt
ファイルを保存したら、実行権限を付与して実行します。
# 実行権限を付与
chmod +x install_packages.sh
# スクリプトを実行
./install_packages.sh
まとめ
Python環境の移行は、site-packages
を安易にコピーするのではなく、pip freeze
とpip download
で必要なファイルをまとめて、pip install
で再構築するのが最も確実な方法です。
特にオフライン環境では、この手順を知っているかどうかで作業効率が大きく変わります。ぜひ、次のプロジェクトで試してみてください。
本日も最後までお読みいただきありがとうございました。
それでは、よいPythonライフを!