はじめに
この実験では、Python 仮想環境を管理するための必須プラクティスを学びます。プロジェクト用の隔離された環境の作成方法、特定の依存関係のインストール方法、不要なパッケージの削除方法、そして最終的にディスク容量を解放するために環境を削除する方法について説明します。これらのスキルは、クリーンで整理された開発ワークフローを維持するために不可欠です。
この実験では、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 は flask と requests およびそれらの依存関係を venv にダウンロードしてインストールします。
この環境に特別にインストールされたパッケージを確認するには、pip list を使用します。
pip list
flask、requests、およびその他インストールされたばかりのパッケージが表示されます。
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
flask と requests は、仮想環境内にのみインストールされ、グローバルな Python 環境をクリーンに保つため、リストに表示されなくなっていることに気づくでしょう。
プロジェクトが進むにつれて、一部の依存関係が不要になることがあります。環境をスリムに保ち、requirements.txt ファイルを更新するために、それらを削除することは良い習慣です。
まず、パッケージを管理するために仮想環境を再アクティベートします。
source venv/bin/activate
プロジェクトで requests パッケージが不要になったと仮定しましょう。pip を使用してアンインストールできます。-y フラグは、アンインストールを自動的に確認します。
pip uninstall -y requests
インストールされているパッケージを再度リストして、パッケージが削除されたことを確認します。
pip list
requests およびその依存関係(他のパッケージで不要になった urllib3、certifi など)がなくなっていることがわかります。
パッケージを削除した後、現在の環境の状態を反映するように 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 開発者にとって不可欠なスキルです。