
忘れないようにメモしておきます。これは、Gemini2.5の問い合わせ結果です。
良い時代になりましたね。
Pythonの仮想環境をバックアップする際、venv
)を直接コピーすることではありません。
フォルダを直接コピーすると、PCの環境(OS、
正しいアプローチは、「インストールされているパッケージのリス
【推奨】requirements.txt
を使ったバックアップと復元方法
これはPython開発における最も標準的でベストプラクティス
ステップ1: バックアップの作成 (pip freeze
)
現在アクティブな仮想環境にインストールされているパッケージとrequirements.txt
というファイルに保存します。
- 仮想環境をアクティベート(有効化)します。
Bash
# macOS / Linux source venv/bin/activate # Windows (コマンドプロンプト) venv\Scripts\activate
ターミナルの行頭に
(venv)
のような表示が出ていることを確認してください。 pip freeze
コマンドでパッケージ一覧をファイルに出力します。Bash(venv) $ pip freeze > requirements.txt
このコマンドを実行すると、プロジェクトのフォルダに
requi
というファイルが作成されます。rements.txt requirements.txt
の中身(例):beautifulsoup4==4.12.3 certifi==2024.6.2 charset-normalizer==3.3.2 idna==3.7 numpy==1.26.4 pandas==2.2.2 python-dateutil==2.9.0.post0 pytz==2024.1 requests==2.32.3 six==1.16.0 soupsieve==2.5 urllib3==2.2.1
このファイルが仮想環境の「バックアップ」となります。
非常に軽量で、どんな環境にも持ち運べます。
ステップ2: バックアップからの復元 (pip install -r
)
別のPCや、環境を作り直したい場所で、保存したrequire
を使って環境を再現します。
- バックアップした
requirements.txt
をプロジェクトフォルダに置きます。 - 新しい仮想環境を作成し、アクティベートします。
Bash
# 新しい仮想環境を作成 python -m venv new_venv # 新しい環境をアクティベート # macOS / Linux source new_venv/bin/activate # Windows new_venv\Scripts\activate
pip install
コマンドでrequirements.txt
から全パッケージをインストールします。Bash(new_venv) $ pip install -r requirements.txt
pip
がrequirements.txt
を読み込み、記載されているバージョンのパッケージを自動的にすべてインスト ールしてくれます。
これで、
その他の方法(より高度な依存関係管理ツール)
実際のアプリケーション開発では、Poetry
やPipenv
と
- Poetry:
pyproject.toml
ファイルで依存関係を定義し、po
ファイルでバージョンを固定します。このetry.lock py
とproject.toml poetry.lock
がバックアップ対象になります。 - Pipenv:
Pipfile
とPipfile.lock
というファイルで同様の管理を行います。
これらのツールを使っている場合は、pyproject.
, Pipfile.lock
など)をGitで管理・
非推奨:仮想環境フォルダの直接コピー
前述の通り、venv
フォルダをzipで圧縮したり、
- パスの非互換性: 仮想環境内のスクリプトには、
作成された場所の絶対パスがハードコード(直書き) されているため、場所を移動すると動作しません。 - OS・Pythonバージョンの非互換性: Windowsで作成した環境はLinuxでは使えません。
また、Python 3.9で作成した環境をPython 3.11しかないPCで使おうとしても動作しません。 - ファイルサイズが大きい: インストールした全パッケージのファイルやPython本体のコ
ピーが含まれるため、 バックアップファイルのサイズが非常に大きくなります。
まとめ
方法 | 手法 | メリット | デメリット | こんな時に |
推奨 | pip freeze > requirements.txt |
軽量、ポータブル(OS等に依存しない)、業界標準、 |
– | 個人・チーム開発の標準的なバックアップ、環境共有 |
非推奨 | フォルダを直接コピー/圧縮 | 見た目上はシンプル | 動作しない、ファイルサイズが大きい、移植性がない | 基本的に行うべきではない |
Python仮想環境のバックアップとは、**「requi
)を保存すること」**