、# はじめに
たまたまですが、pip install
コマンドに --dry-run
オプションが有ることを知りました。
連想できる通り、指定したパッケージを実際にはインストールせずに、依存パッケージ含めて何がインストールされる予定かを教えてくれるオプションです。
2022年7月リリースの 22.2 で追加されたようです。
Add --dry-run option to pip install, to let it print what it would install but not actually change anything in the target environment. (#11096)
https://pip.pypa.io/en/stable/news/#v22-2
早速試してみました。
- 検証環境
- pip 23.2.1
- Python 3.11
おためし
以下の状態から始めます
% pip list Package Version ---------- ------- pip 23.2.1 setuptools 67.6.1
ansible-core
を --dry-run
付きで install
実行してみます。
% pip install ansible-core --dry-run Collecting ansible-core Obtaining dependency information for ansible-core from https://files.pythonhosted.org/packages/6a/46/f3a297c7b316f7bcdbd9d82162440f316182215f4071c61d4d21dd158940/ansible_core-2.15.2-py3-none-any.whl.metadata Downloading ansible_core-2.15.2-py3-none-any.whl.metadata (7.5 kB) Collecting jinja2>=3.0.0 (from ansible-core) Using cached Jinja2-3.1.2-py3-none-any.whl (133 kB) Collecting PyYAML>=5.1 (from ansible-core) Obtaining dependency information for PyYAML>=5.1 from https://files.pythonhosted.org/packages/ec/0d/26fb23e8863e0aeaac0c64e03fd27367ad2ae3f3cccf3798ee98ce160368/PyYAML-6.0.1-cp311-cp311-macosx_10_9_x86_64.whl.metadata Downloading PyYAML-6.0.1-cp311-cp311-macosx_10_9_x86_64.whl.metadata (2.1 kB) Collecting cryptography (from ansible-core) Obtaining dependency information for cryptography from https://files.pythonhosted.org/packages/f0/f7/49c9d11c7ef9d335d6916c4360ec0c299c523cf12c502323a85379c1e7b9/cryptography-41.0.2-cp37-abi3-macosx_10_12_x86_64.whl.metadata Downloading cryptography-41.0.2-cp37-abi3-macosx_10_12_x86_64.whl.metadata (5.2 kB) Collecting packaging (from ansible-core) Using cached packaging-23.1-py3-none-any.whl (48 kB) Collecting resolvelib<1.1.0,>=0.5.3 (from ansible-core) Using cached resolvelib-1.0.1-py2.py3-none-any.whl (17 kB) Collecting MarkupSafe>=2.0 (from jinja2>=3.0.0->ansible-core) Obtaining dependency information for MarkupSafe>=2.0 from https://files.pythonhosted.org/packages/c0/c7/171f5ac6b065e1425e8fabf4a4dfbeca76fd8070072c6a41bd5c07d90d8b/MarkupSafe-2.1.3-cp311-cp311-macosx_10_9_x86_64.whl.metadata Downloading MarkupSafe-2.1.3-cp311-cp311-macosx_10_9_x86_64.whl.metadata (3.0 kB) Collecting cffi>=1.12 (from cryptography->ansible-core) Using cached cffi-1.15.1-cp311-cp311-macosx_10_9_x86_64.whl (179 kB) Collecting pycparser (from cffi>=1.12->cryptography->ansible-core) Using cached pycparser-2.21-py2.py3-none-any.whl (118 kB) Downloading ansible_core-2.15.2-py3-none-any.whl (2.2 MB) ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 2.2/2.2 MB 4.9 MB/s eta 0:00:00 Using cached PyYAML-6.0.1-cp311-cp311-macosx_10_9_x86_64.whl (187 kB) Downloading cryptography-41.0.2-cp37-abi3-macosx_10_12_x86_64.whl (2.8 MB) ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 2.8/2.8 MB 4.5 MB/s eta 0:00:00 Downloading MarkupSafe-2.1.3-cp311-cp311-macosx_10_9_x86_64.whl (13 kB) Would install Jinja2-3.1.2 MarkupSafe-2.1.3 PyYAML-6.0.1 ansible-core-2.15.2 cffi-1.15.1 cryptography-41.0.2 packaging-23.1 pycparser-2.21 resolvelib-1.0.1 %
最終行で、Jinja2-3.1.2 MarkupSafe-2.1.3 PyYAML-6.0.1 ansible-core-2.15.2 cffi-1.15.1 cryptography-41.0.2 packaging-23.1 pycparser-2.21 resolvelib-1.0.1
がインストールされる予定と表示されました。
実際にはインストールされていません。
% pip list Package Version ---------- ------- pip 23.2.1 setuptools 67.6.1
一応、実際にインストールもしてみます。
% pip install ansible-core Collecting ansible-core Obtaining dependency information for ansible-core from https://files.pythonhosted.org/packages/6a/46/f3a297c7b316f7bcdbd9d82162440f316182215f4071c61d4d21dd158940/ansible_core-2.15.2-py3-none-any.whl.metadata ...(略)... Installing collected packages: resolvelib, PyYAML, pycparser, packaging, MarkupSafe, jinja2, cffi, cryptography, ansible-core Successfully installed MarkupSafe-2.1.3 PyYAML-6.0.1 ansible-core-2.15.2 cffi-1.15.1 cryptography-41.0.2 jinja2-3.1.2 packaging-23.1 pycparser-2.21 resolvelib-1.0.1 %
インストールされたパッケージを含めて表示すると、たしかに、インストール予定とされていたパッケージたちがインストールされていました。
% pip list Package Version ------------ ------- ansible-core 2.15.2 cffi 1.15.1 cryptography 41.0.2 Jinja2 3.1.2 MarkupSafe 2.1.3 packaging 23.1 pip 23.2.1 pycparser 2.21 PyYAML 6.0.1 resolvelib 1.0.1 setuptools 67.6.1
おわりに
これまで、アップデート可能なバージョンの pip を使ってると促される [notice] To update, run: pip install --upgrade pip
の表示を抑制する作法として pip
のバージョンアップをしてきましたが、今回のような改善を知ってアップデートするモチベーションが高まりました。