Closed7

macOSのpip installってどこにインストールされるの?

astkastk

https://zenn.dev/asataka/scraps/5c1f9b723d48df で pip install bashplotlib したらPATHが通らなかったので。

asa-taka@tailmoon-2 ~ % which python3
/Users/asa-taka/.anyenv/envs/pyenv/shims/python3
asa-taka@tailmoon-2 ~ % which pip3
/Users/asa-taka/.anyenv/envs/pyenv/shims/pip3

asa-taka@tailmoon-2 ~ % pip install bashplotlib
Requirement already satisfied: bashplotlib in /usr/local/lib/python3.9/site-packages (0.6.5)
astkastk

PATHの中身。

asa-taka@tailmoon-2 ~ % echo $PATH | tr : \\n
/Users/asa-taka/.cabal/bin
/Users/asa-taka/.ghcup/bin
/Users/asa-taka/bin
/Users/asa-taka/.cargo/bin
/usr/local/opt
~/src/github.com/flutter/flutter/bin
/Users/asa-taka/.anyenv/envs/pyenv/shims
/Users/asa-taka/.anyenv/envs/pyenv/bin
/Users/asa-taka/.anyenv/bin
/Users/asa-taka/bin
/usr/local/bin
/usr/bin
/bin
/usr/sbin
/sbin
/Applications/VMware Fusion.app/Contents/Public
/opt/X11/bin
/Library/Apple/usr/bin
/Library/Frameworks/Mono.framework/Versions/Current/Commands
/Applications/Wireshark.app/Contents/MacOS
/Users/asa-taka/.cargo/bin
~/.pub-cache/bin
astkastk
asa-taka@tailmoon-2 ~ % python2.7 -m site --user-base
/Users/asa-taka/Library/Python/2.7
asa-taka@tailmoon-2 ~ % python2.7 -m site --user-site
/Users/asa-taka/Library/Python/2.7/lib/python/site-packages

asa-taka@tailmoon-2 ~ % python -m site --user-base
/Users/asa-taka/Library/Python/3.9
asa-taka@tailmoon-2 ~ % python -m site --user-site
/Users/asa-taka/Library/Python/3.9/lib/python/site-packages
astkastk

pip install --user で入れたらご丁寧にWARNINGが出た。以前見逃していただけかもしれない。

asa-taka@tailmoon ~ % pip install --user bashplotlib
Collecting bashplotlib
  Using cached bashplotlib-0.6.5-py3-none-any.whl
Installing collected packages: bashplotlib
  WARNING: The scripts hist and scatter are installed in '/Users/asa-taka/Library/Python/3.9/bin' which is not on PATH.
  Consider adding this directory to PATH or, if you prefer to suppress this warning, use --no-warn-script-location.
Successfully installed bashplotlib-0.6.5

でも pip install しなおしたら出ない。

asa-taka@tailmoon ~ % pip install bashplotlib
Collecting bashplotlib
  Using cached bashplotlib-0.6.5-py3-none-any.whl
Installing collected packages: bashplotlib
Successfully installed bashplotlib-0.6.5
astkastk

https://github.com/glamp/bashplotlib これ、bashplotlib という名前ではなく複数の実行ファイルが含まれていただけだった。普通に /usr/local/bin にインストールされていた。

asa-taka@tailmoon ~ % which scatter
/usr/local/bin/scatter

ちなみにどんな実行ファイルが含まれるかという情報は pip show -v で表示される。

asa-taka@tailmoon ~ % pip show -v bashplotlib
Name: bashplotlib
Version: 0.6.5
Summary: plotting in the terminal
Home-page: https://github.com/glamp/bashplotlib
Author: Greg Lamp
Author-email: lamp.greg@gmail.com
License: BSD
Location: /usr/local/lib/python3.9/site-packages
Requires:
Required-by:
Metadata-Version: 2.1
Installer: pip
Classifiers:
  Environment :: Console
  Intended Audience :: End Users/Desktop
  License :: OSI Approved :: BSD License
  Programming Language :: Python :: 2.7
  Programming Language :: Python :: 3
Entry-points:
  [console_scripts]
  hist = bashplotlib.histogram:main
  scatter = bashplotlib.scatterplot:main

Entry-points の console_scripts に hist と scatter と表示されている。

astkastk

ちょっと考えてみたいポイント

  • pip install --user を使ったほうがいいのか
  • /usr/local/bin などシステムグローバルな場所にインストールするのに pyenv の pip を使っていいのか
    • どのバージョンの python で実行するかぐちゃぐちゃになりそう
    • pip install --user で入れるとバージョンごとのディレクトリに分けてインストールされるので
astkastk

/usr/local/bin に入れられたスクリプトもちゃんとshebangでバージョンが指定されていた。

# pip install bashplotlib して入った実行スクリプト
asa-taka@tailmoon ~ % which scatter
/usr/local/bin/scatter

asa-taka@tailmoon ~ % head -n 1 $(which scatter)
#!/usr/local/opt/python@3.9/bin/python3.9

3.9 などのマイナーバージョン別に管理されている。

このスクラップは2021/05/05にクローズされました