• home
  • about
  • 全ての投稿
  • ソフトウェア・ハードウェアの設定のまとめ
  • 分析関連のまとめ
  • ヘルスケア関連のまとめ
  • 生涯学習関連のまとめ

pip

date: 2021-03-09 excerpt: pythonのpipついて

tag: pippython


pythonのpipついて

概要

  • pythonのパッケージマネージャ
  • よりロバストに管理したい場合は、poetryが用いられる
    • poetry形式で管理されたモジュールやライブラリでもpipでインストールできる
  • インストール可能な対象は以下の通り
    • pypiで管理されたパッケージ
    • gitで管理されたパッケージ
    • zip形式のパッケージ
  • PEP 668の提案により、グローバル環境にインストールすることは非推奨となった

PEP 668以降でグローバル環境にインストールする方法

  • pip3 install <packagename> --break-system-packagesを用いる
  • 環境変数PIP_BREAK_SYSTEM_PACKAGES="1"を設定する

rootとuser

root

$ sudo pip3 install <hoobar>

user

$ pip3 install --user <hoobar>
  • --userオプションをつけると$HOME/.local/lib/以下にインストールされる

pip3のpathとpython3のpathのレベルが異なるとき

$ python3 -m pip install <hoobar>
  • python3経由で実行すると明示的にpip3が選択される

requirements.txtからインストールする

$ python3 -m pip install -r requirements.txt

モジュールとしてのpipからインストールする

モジュールがインストールされているかの確認をして入っていなかったらインストールする例

import importlib.util
import pip
for pkg_name in ["requests", "bs4", "loguru"]:
    if importlib.util.find_spec(pkg_name) is None:
        pip.main(["install", pkg_name])

依存を無視してインストール

  • グローバル環境がおかしくなるリスクがあるので、使う必要がある場合はpoetryなどで環境を分ける
  • 強制インストールのユースケース以外では、colabで使用する際に現在のpandas, numpyの整合性を壊さないなどのユースケースもある
$ pip install --upgrade --no-deps --force-reinstall <packagename>

requirements.txtとconstraints.txt

  • requirements.txt
    • 必要なパッケージ
    • バージョンはpackage==x.y.zと表現
    • 指定しないと、最新版が使用される
    • 範囲指定はpackage<X.Y.Z,>=x.y.zと表現する
  • constraints.txt
    • サブパッケージ
    • requirements.txtより優先される
    • 複数のプロジェクトで共用するなどを想定されているファイル
      • 複数間のプロジェクトで同じバージョンを維持したい時

指定のpythonのバージョンを無視してインストール

$ pip install --ignore-requires-python <packagename>

特定のgithubのブランチからインストール

  • URLの前にgit+のプレフィックスが必要
  • @<branch-name>のサフィックスが必要
$ python3 -m pip install git+https://github.com/Garve/mamimo.git@main

zip形式のパッケージをインストール

  • google colabなどで社内開発したパッケージを利用したい場合など、google driveにzipで置いてインストール可能
$ python3 -m pip install ./<path-to-zipped-library.zip>

pip freeze

  • 今、インストールされているパッケージをバージョン情報を付与してstdoutに出力
$ pip freeze | less
apt-xapian-index==0.49
apturl==0.5.2
argon2-cffi==21.3.0
argon2-cffi-bindings==21.2.0
...

トラブルシューティング

OSX(mac)でpipでインストールしたはずの実行ファイルが見つからない

  • 原因
    • brewのpythonを用いていると以下のディレクトリにインストールされることがあるため
      • ~/Library/Python/<python-version>/bin
  • 対応
    • パスが通っている空間にシンボリックリンクを貼る、PATHを追加するなど

参考

  • Python 3.11, pip and (breaking) system packages


pippython Share Tweet