【要約】Python開発の勉強(3) venvで仮想環境の作成 [Zenn_Python] | Summary by TechDistill
> Source: Zenn_Python
Execute Primary Source
// Problem
開発者が単一のサーバー上で複数のPythonプロジェクトを並行して開発する場合、パッケージの依存関係の競合が深刻な問題となる。プロジェクトごとに要求されるライブラリのバージョンが異なるため、共通環境では管理が困難である。
- ・プロジェクトごとに必要なパッケージを個別に管理できない。
- ・システム標準のPython環境に直接インストールすると、他のアプリに悪影響を及ぼす。
- ・パッケージの更新が、OS全体の動作を不安定にするリスクを孕む。
// Approach
開発者はPython標準の
venvモジュールを採用し、プロジェクトごとに隔離された実行環境を構築する。これにより、システム環境を保護しながら、プロジェクト固有の依存関係を構築できる。- ・
python3.6 -m venv venvを実行し、プロジェクト配下に仮想環境を作成する。 - ・
source venv/bin/activateにより、シェルのパスを仮想環境へ切り替える。 - ・
pipを用いて、仮想環境内のみに特定のパッケージ(requests等)をインストールする。 - ・
pip freezeで、インストール済みのパッケージ構成を正確に記録する。
// Result
開発者は仮想環境を利用することで、システム環境を汚さずにプロジェクトごとの依存関係を管理できる。これにより、開発環境の構築と破棄が容易になり、開発効率が向上する。
- ・
pip freezeにより、環境内のパッケージ構成を正確にリスト化できる。 - ・
deactivateにより、容易にOS標準の環境へ復帰できる。 - ・プロジェクト単位でのパッケージの追加・削除が、システムに影響を与えず安全に行える。
Senior Engineer Insight
> 本記事の手順は基礎として重要だが、実務での適用には注意が必要だ。まず、Python 3.6は既にEOLを迎えており、現代の現場では使用すべきではない。また、
venvはPythonライブラリの分離には有効だが、OSレベルの共有ライブラリの競合は解決できない。大規模なシステム開発では、venvによる分離に加え、Docker等のコンテナ技術を用いてOS層を含めた環境の再現性を担保するのが標準的なアプローチである。