【要約】[きもちを理解]pipとvenvで仮想環境を作成 [Zenn_Python] | Summary by TechDistill
> Source: Zenn_Python
Execute Primary Source
// Problem
Python開発者が、複数のプロジェクトを同一のシステム環境で並行して進める際に、ライブラリのバージョン競合という深刻な問題に直面する。
- ・ライブラリAが要求するバージョンと、ライブラリBが要求するバージョンが矛盾する。
- ・システム全体に直接ライブラリをインストールすると、環境が複雑化し汚染される。
- ・依存関係の不整合が発生すると、プログラムが予期せぬエラーで停止する。
- ・一度壊れたシステム環境の復旧には、多大な工数がかかるリスクがある。
// Approach
開発者が、プロジェクトごとに独立した実行環境を構築するために、venvモジュールを用いた仮想環境の作成手法を採用する。
- ・
python3 -m venv .kasoukankyoを実行し、プロジェクト専用の隔離されたディレクトリを作成する。 - ・
source .kasoukankyo/bin/activateにより、作成した仮想環境内へシェルを切り替える。 - ・仮想環境内で
pipコマンドを使用し、必要なライブラリのみをその環境内へ導入する。 - ・作業終了時には
deactivateを実行し、安全に仮想環境から抜ける手順を踏む。
// Result
開発者が、プロジェクトごとに異なるライブラリ構成を安全に保持できる環境を実現する。
- ・ライブラリ間の依存関係の衝突を、環境の分離によって物理的に回避できる。
- ・システム全体のPython環境を汚染することなく、クリーンな状態を維持できる。
- ・プロジェクトごとに必要なパッケージのみを管理でき、環境の軽量化に寄与する。
- ・開発環境の構築手順が明確になり、プロジェクトの再現性が向上する。
Senior Engineer Insight
> 初学者の導入としては、概念を擬人化して分かりやすく伝えている。しかし、実戦の現場ではこれだけでは不十分である。依存関係の厳密な固定には
requirements.txtやPoetry等の利用が必須となる。また、本番環境へのデプロイを見据えるならば、venvによる隔離だけでなく、Dockerを用いたコンテナ化による環境の不変性確保をセットで検討すべきである。