仮想環境のクリーンアップ方法

PythonBeginner
オンラインで実践に進む

はじめに

この実験では、Python 仮想環境を管理するための必須プラクティスを学びます。プロジェクト用の隔離された環境の作成方法、特定の依存関係のインストール方法、不要なパッケージの削除方法、そして最終的にディスク容量を解放するために環境を削除する方法について説明します。これらのスキルは、クリーンで整理された開発ワークフローを維持するために不可欠です。

仮想環境の作成とアクティベーション

まず、サンプルプロジェクト用の隔離された環境を作成しましょう。仮想環境を使用することで、このプロジェクトのパッケージが他のプロジェクトのパッケージやシステム全体の Python インストールと競合しないようにします。ここでは、Python に標準で含まれているツールである venv モジュールを使用します。

セットアップスクリプトは、すでに /home/labex/project/my_web_app にプロジェクトディレクトリを作成してくれています。そこへ移動しましょう。

cd my_web_app

次に、このディレクトリ内に venv という名前の仮想環境を作成します。環境ディレクトリに venv という名前を付けるのは一般的な慣習です。

python3 -m venv venv

このコマンドは、新しい Python インストールを含む venv ディレクトリを作成します。その内容を確認するには、以下を実行します。

ls -F venv/

bin/include/lib/ のようなサブディレクトリと、設定ファイルが表示されるはずです。

bin/  include/  lib/  lib64@  pyvenv.cfg

この環境の使用を開始するには、「アクティベート」する必要があります。

source venv/bin/activate

このコマンドを実行すると、シェルのプロンプトに (venv) が表示され、仮想環境がアクティブであることが示されます。ここで実行する Python や pip コマンドは、この環境内の実行可能ファイルとパッケージを使用するようになります。

Python 実行可能ファイルへのパスを確認することで、これを検証できます。

which python

出力は、venv ディレクトリ内の Python バイナリを指します。

/home/labex/project/my_web_app/venv/bin/python

依存関係のインストールと分離

仮想環境がアクティブになったので、プロジェクトの依存関係をインストールできます。必要なパッケージがリストされた requirements.txt ファイルが作成されています。

pip を使用してパッケージをインストールします。

pip install -r requirements.txt

Pip は flaskrequests およびそれらの依存関係を venv にダウンロードしてインストールします。

この環境に特別にインストールされたパッケージを確認するには、pip list を使用します。

pip list

flaskrequests、およびその他インストールされたばかりのパッケージが表示されます。

Package            Version
------------------ --------
certifi            ...
charset-normalizer ...
click              ...
Flask              2.2.2
idna               ...
itsdangerous       ...
Jinja2             ...
MarkupSafe         ...
pip                ...
requests           2.28.1
setuptools         ...
urllib3            ...
Werkzeug           ...

次に、分離の力を確認しましょう。環境を非アクティブにして、システムのグローバルコンテキストに戻ります。

deactivate

プロンプトの (venv) プレフィックスが消えます。ここで、もう一度 pip list を実行します。

pip list

flaskrequests は、仮想環境内にのみインストールされ、グローバルな Python 環境をクリーンに保つため、リストに表示されなくなっていることに気づくでしょう。

不要なパッケージの削除

プロジェクトが進むにつれて、一部の依存関係が不要になることがあります。環境をスリムに保ち、requirements.txt ファイルを更新するために、それらを削除することは良い習慣です。

まず、パッケージを管理するために仮想環境を再アクティベートします。

source venv/bin/activate

プロジェクトで requests パッケージが不要になったと仮定しましょう。pip を使用してアンインストールできます。-y フラグは、アンインストールを自動的に確認します。

pip uninstall -y requests

インストールされているパッケージを再度リストして、パッケージが削除されたことを確認します。

pip list

requests およびその依存関係(他のパッケージで不要になった urllib3certifi など)がなくなっていることがわかります。

パッケージを削除した後、現在の環境の状態を反映するように requirements.txt ファイルを更新する必要があります。現在のパッケージリストをファイルに「フリーズ」することでこれを行うことができます。

pip freeze > requirements.txt

変更を確認するために、更新されたファイルを表示できます。

cat requirements.txt

ファイルには、flask とその依存関係のみがリストされるようになります。

click==...
Flask==2.2.2
itsdangerous==...
Jinja2==...
MarkupSafe==...
Werkzeug==...

最後に、現時点では環境を非アクティブにします。

deactivate

仮想環境全体の削除

プロジェクトが完了したとき、または新しい環境で最初からやり直したい場合は、最も簡単なクリーンアップ方法は、仮想環境ディレクトリ全体を削除することです。

まず、現在いるディレクトリを削除するのは一般的に良い考えではないため、my_web_app ディレクトリ内にいないことを確認してください。親ディレクトリに移動しましょう。

cd /home/labex/project

削除する前に、du (ディスク使用量) コマンドを使用して、仮想環境がどれだけのディスク容量を使用しているかを確認できます。

du -sh my_web_app/venv

出力には、ディレクトリの合計サイズが表示されます。

30M     my_web_app/venv

次に、venv ディレクトリ全体を削除します。rm -rf コマンドは、ディレクトリとそのすべての内容を再帰的かつ強制的に削除します。このコマンドには注意してください。

rm -rf my_web_app/venv

my_web_app の内容をリストして、ディレクトリがなくなったことを確認します。

ls my_web_app

requirements.txt ファイルのみが残っていることがわかります。仮想環境は完全にクリーンアップされました。

requirements.txt

まとめ

この実験では、Python 仮想環境を管理する完全なライフサイクルについて学びました。venv を使用して環境を作成し、アクティベートし、requirements.txt ファイルから依存関係をインストールし、パッケージの分離を観察し、不要なパッケージを削除し、最後に環境ディレクトリ全体を削除してクリーンアップする練習をしました。これらは、クリーンで再現可能、かつ競合のないプロジェクトセットアップを維持するために、あらゆる Python 開発者にとって不可欠なスキルです。