コマンドの概要
Python環境では、pipを使ってモジュール・ライブラリーをインストールすることができるが、そのままpipを実行するとシステム全体に反映されてしまう。そのため、プロジェクト毎や用途毎に独立した環境を用意し、必要なPythonライブラリをそれぞれで管理するためのvenv仮想環境を作成する機能が、Python 3.3から導入された。削除したい時も、仮想環境のフォルダを丸ごと削除するだけで良いので管理が楽である。
単にvenv仮想環境を作成する。
python3 -m venv [newenvname]
しかし、Python3.9からは、--upgrade-depsというオプションが追加されており、このオプションをつけて仮想環境を作成すると、pip/setuptoolsが最新化された状態で仮想環境が作成される。
venv仮想環境作成時にpip/setuptoolsを最新化する
python3 -m venv --upgrade-deps [newenvname]
参考docs
https://docs.python.org/ja/3.9/library/venv.html
単にvenv仮想環境を作成した場合
仮想環境を作成してもグローバル環境のpip/setuptoolsと同じバージョンのものが導入されており、最新のpipではないという警告が表示される。setuptoolsも当然最新のものではない。
グローバル環境のパッケージ・バージョン
syasuda@MacBook ~ % python3 -m pip list
Package Version
---------- -------
altgraph 0.17.2
future 0.18.2
macholib 1.15.2
pip 21.2.4
setuptools 58.0.4
six 1.15.0
wheel 0.37.0
WARNING: You are using pip version 21.2.4; however, version 24.2 is available.
You should consider upgrading via the '/Library/Developer/CommandLineTools/usr/bin/python3 -m pip install --upgrade pip' command.
仮想環境の構築(--upgrade-depsオプションなし)
syasuda@MacBook ~ % python3 -m venv testenv1
syasuda@MacBook ~ % source testenv1/bin/activate
(testenv1) syasuda@MacBook-Pro ~ % pip list
Package Version
---------- -------
pip 21.2.4
setuptools 58.0.4
WARNING: You are using pip version 21.2.4; however, version 24.2 is available.
You should consider upgrading via the '/Users/syasuda/testenv1/bin/python3 -m pip install --upgrade pip' command.
(testenv1) syasuda@MacBook ~ % deactivate
--upgrade-deps
オプションを付けて、venv仮想環境を作成した場合
バージョンが3.9以上であることを確認。
syasuda@MacBook ~ % python3 -V
Python 3.9.6
仮想環境の構築(--upgrade-depsオプションあり)
syasuda@MacBook ~ % python3 -m venv --upgrade-deps testenv2
Requirement already satisfied: pip in ./testenv2/lib/python3.9/site-packages (21.2.4)
Collecting pip
Using cached pip-24.2-py3-none-any.whl (1.8 MB)
Requirement already satisfied: setuptools in ./testenv2/lib/python3.9/site-packages (58.0.4)
Collecting setuptools
Using cached setuptools-72.1.0-py3-none-any.whl (2.3 MB)
Installing collected packages: setuptools, pip
Attempting uninstall: setuptools
Found existing installation: setuptools 58.0.4
Uninstalling setuptools-58.0.4:
Successfully uninstalled setuptools-58.0.4
Attempting uninstall: pip
Found existing installation: pip 21.2.4
Uninstalling pip-21.2.4:
Successfully uninstalled pip-21.2.4
Successfully installed pip-24.2 setuptools-72.1.0
syasuda@MacBook ~ % source testenv2/bin/activate
(testenv2) syasuda@MacBook-Pro ~ % pip list
Package Version
---------- -------
pip 24.2
setuptools 72.1.0
(testenv2) syasuda@MacBook ~ % deactivate