こんにちは、デジタルボーイです。備忘録がてら、pip install
のオプションについて、まとめておきます。
デジタルボーイです。
データサイエンス歴20年以上のおっさんです。中小企業診断士として、データサイエンス、WEBマーケティング、SEOに関するデータ分析、コンサルティングの仕事をしています。自己紹介の詳細はコチラ
pip install の主要なオプション
オプション | 用途 |
---|---|
-r, –requirement ファイル名 | 指定したファイルに記載されているパッケージをまとめてインストールする |
-U, –upgrade | インストール済みのパッケージを最新版にアップグレードする |
-v, –verbose | 詳細な実行ログを表示する |
-q, –quiet | 警告やエラー以外のメッセージを表示しない |
–user | ユーザー環境にのみパッケージをインストールする |
–no-deps | 依存パッケージをインストールしない |
–pre | プレリリース版やベータ版のパッケージもインストール対象とする |
-i, –index-url <url> | パッケージのダウンロード元となるPyPIのURLを指定する |
–extra-index-url <url> | 追加のパッケージインデックスURLを指定する |
–no-cache-dir | キャッシュを使用せずに直接パッケージをダウンロードする |
なお、今回は、pipのリファレンスガイドに準拠し、記事を作っています。ただ、全てのオプションを列挙しているわけではないので、詳細が知りたい場合、リファレンスガイドについても確認してください。
使い方
オプションは、そのオプションによって、-<オプション名>
や--<オプション名>
というように、ハイフンを一つもしくは二つをオプション名の前に付けて指定します。2つ書いてあると場合は、どちらで指定しても良いです。多くの場合、ハイフン一つはオプション名を略した指定方法で、ハイフン二つはオプション名を略さず指定する方法です。
オプションの詳細と使用例
1. -r <ファイル名> もしくは --requirement <ファイル名>
使用頻度:★★★
指定したファイルからパッケージリストを読み込みます。
使用例:
pip install -r requirements.txt
とは言っても、「そのファイルどうやって作るんじゃい!」ってなりますよね。pip freezeコマンドを使って現在のPythonパッケージのリストを出力できます。
pip freeze > requirements.txt
pip freeze
の後の > requirements.txt
で、出力ファイルを指定しています。慣例的に「requirements.txt」がしていされます。
例えば、開発環境で作成しpip freeze
でパッケージリストを出力し、その後、本番環境でpip install -r
でパッケージ一覧を読み込みます。
ちなみに、出力ファイルを指定ぜずに次を実行した場合、こんな感じで、現在のパッケージのバージョンがabc順にコンソールに出力されます。
% pip freeze
absl-py==2.1.0
accelerate==0.30.1
annotated-types==0.6.0
ansi2html==1.9.1
anyio==4.0.0
appnope==0.1.3
appscript==1.2.5
...
2. -U もしくは --upgrade
使用頻度:★★★
指定したパッケージを最新バージョンにアップグレードします。
使用例:
pip install -U numpy
ただ、こんな感じで、パッケージ間の依存関係でエラーが出る場合もあるので、実行する際は注意が必要です。絶対に、本番環境でいきなり実行するのはさけてください。。。
& pip install -U numpy
ERROR: pip's dependency resolver does not currently take into account all the packages that are installed. This behaviour is the source of the following dependency conflicts.
scipy 1.11.4 requires numpy<1.28.0,>=1.21.6, but you have numpy 2.1.2 which is incompatible.
pyarrow 15.0.1 requires numpy<2,>=1.16.6, but you have numpy 2.1.2 which is incompatible.
pandas-profiling 3.2.0 requires visions[type_image_path]==0.7.4, but you have visions 0.7.5 which is incompatible.
3. -v もしくは --verbose
使用頻度:★
現在、インストールしているpipの詳細な出力を表示します。
使用例:
pip install -v requests
出力はこんな感じです
Using pip 24.2 from /opt/homebrew/lib/python3.11/site-packages/pip (python 3.11)
Requirement already satisfied: requests in /opt/homebrew/lib/python3.11/site-packages (2.31.0)
Requirement already satisfied: charset-normalizer<4,>=2 in /opt/homebrew/lib/python3.11/site-packages (from requests) (3.3.2)
Requirement already satisfied: idna<4,>=2.5 in /opt/homebrew/lib/python3.11/site-packages (fr
・・・
4. -q もしくは --quiet
使用頻度:★★
パッケージをインストールする際、出力を最小限に抑えて表示します。
使用例:
pip install -q pandas
僕なんかは、コンソール上で作業しながらパッケージをインストールしている場合、コンソール上で出力が大量に長々とでると、前のコマンドなんかが見えづらく、「うぇ〜」ってなる時がありますが、そんな時に便利です。。
5. --user
使用頻度:★
ユーザーインストールディレクトリにパッケージをインストールします。
使用例:
pip install --user matplotlib
僕はシステム全体に権限がない時や、Dockerなど仮想環境でインストールする場合、必要なことがあります。
6. --no-deps
使用頻度:★★
対象のパッケージをインストールする際、関連する依存関係にあるパッケージをインストールしません。
使用例:
pip install --no-deps scipy
通常、あるパッケージをインストールする際、そのパッケージに必要なパッケージも自動的にインストールします。例えば、pandasをインストールすると、自動的にnumpyもインストールされます。そのような関係を依存関係と言います。
僕は依存関係にあるパッケージのバージョンを、その環境でインストールしたくない場合など、依存関係も自分で管理したい場合、これを使います。
7. --pre
使用頻度:★★
プレリリースや開発版などもインストールするバージョンの対象に入れて、インストールします。
使用例:
pip install --pre tensorflow
通常、pip installは最新の安定版をインストールします。ただ、最新機能をお試しでインストールしたい場合などは、僕はこれを使います。
8. -i <url> もしくは --index-url <url>
使用頻度:★
パッケージをURLで指定してインストールします。
使用例:
pip install -i https://test.pypi.org/simple/ your-package
正直、僕は使ったことないです。。。大企業や研究機関などで、プライベートにPyPiサーバーを構築していて、そこからインストールしたい場合、使うらしい。
9. --extra-index-url <url>
使用頻度:★
追加のパッケージインデックスURLを指定します。
使用例:
pip install --extra-index-url https://your.repo.url/simple your-package
正直、僕は使ったことないです。。。
10. --no-cache-dir
使用頻度:★★
キャッシュを無視する
使用例:
pip install --no-cache-dir requests
pipはパッケージインストールする場合、ローカルにキャッシュのためのディレクトリにキャッシュ(バックアップみたいなもの)を溜め込み、同じインストールをする場合はダウンロードしないで済むようにしています。このキャッシュへの溜め込みをしないようにする指定ですね。あまり使うことがないと思いますが、いろいろ、パッケージをインストールしていると、パッケージのキャッシュが悪さをして、インストールエラーとなる場合があります。そんな時に、使ったりします。
あと、本番環境で、あまりファイルを溜め込みたくない場合なども使えそうですね。
まとめ
こんな感じで、僕の独断と偏見でpipのオプションを紹介しました。よかったら、参考にしてください!