RaspberryPi で pip をインストール

pip を RaspberryPi にインストール。

今までなんとなくインストールしてきたが、RasbperryPi OS と Raspbian と Ubuntu の独自パッケージ / Python2 と 3 / pip と pip3 の事情を踏まえて、結局どうするのが良かったんだっけ?


# 環境

- Raspberry Pi 3
- Raspberry Pi OS Lite
- Release date: February 21st 2023
- System: 32-bit

# Python のバージョン

```
$ python --version
Python 3.9.2

```


# pip はデフォルトではインストールされていない

今どきは pip は python に標準でついてくるらしいのだけれど Ubuntu 上では入っていないらしい。
```
$ python -m pip -V
/usr/bin/python: No module named pip
```

# pip のインストール

MS-Windows などでの環境では get-pip.py を使ってインストールするらしいのだけれど、
RaspberryPi OS や Ubuntu などでは OS ディストリビューションパッケージのものを使うのが良さそう。

理由はアップデートに齟齬が生じるというらしいのだが・・・うん? OS ディストリビューションパッケージで提供されるPython モジュールと pip でインストールされる Python モジュールの話 ? それは pip の由来とは関係なさそうな気が・・・

上記の点とは別に、 get-pip.py を使っての pip と OS ディストリビューションパッケージで提供される pip の違いもある。

通常の pip はユーザレベルで動かして python モジュールはユーザーローカルにインストールされるが、OS ディストリビューションパッケージで提供される pip でインストールした  python モジュールはシステムにインストールされる。


だから、python の本来のやり方の pip の操作とは違い、  OS ディストリビューションパッケージで提供される pip がらみは操作が微妙に違うことを意識しておかないといけない。


::: note 

2024/7/6 追記：

記事を書いたときにはあまりよく把握できていなかったのですが、その後見つけた資料で
Debian 系の PIP のカスタマイズについての説明がありました。


「Ubuntuにpipコマンドがない | インストール方法や注意点を解説します | Pythonマニア」
https://pythonmaniac.com/ubuntu-pip/

OS ディストリビューションパッケージの pip は、ユーザ権限で実行するときに -user オプションが自動で付く用にカスタマイズされているらしいですね。

上記を踏まえ、OSディストリビューションに付属の pip を使うときは、特に指定をしなければ sudo 権限を付けてシステムにインストールするという使い方になります。

:::

## pip を RaspberryPi OS パッケージからインストール

```
$ sudo apt install pip

```
とすると

```
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
Note, selecting 'python3-pip' instead of 'pip'
.
.
.
```

python3-pip をインストールしてくれる。

### バージョン

```
$ pip -V
pip 20.3.4 from /usr/lib/python3/dist-packages/pip (python 3.9)

```

### pip3 との関係

上記で pip3 が使えるようになる。

```
$ pip3 -V
pip 20.3.4 from /usr/lib/python3/dist-packages/pip (python 3.9)
```
一見同じように見えるが


```
$ which pip pip3
/usr/bin/pip
/usr/bin/pip3
```

リンクなどではなく、微妙に違っている
```
$ ls -alh /usr/bin/pip*
-rwxr-xr-x 1 root root 941 Jul 13  2022 /usr/bin/pip
-rwxr-xr-x 1 root root 943 Jul 13  2022 /usr/bin/pip3
```
違いの内訳は?

```
$ diff /usr/bin/pip /usr/bin/pip3
2c2
< # EASY-INSTALL-ENTRY-SCRIPT: 'pip==20.3.4','console_scripts','pip'
---
> # EASY-INSTALL-ENTRY-SCRIPT: 'pip==20.3.4','console_scripts','pip3'
33c33
<     sys.exit(load_entry_point('pip==20.3.4', 'console_scripts', 'pip')())
---
>     sys.exit(load_entry_point('pip==20.3.4', 'console_scripts', 'pip3')())
```

中身は同じっぽいですね。

## RaspberryPi OS 付属の pip を削除

もし削除する場合は

```
$ sudo apt remove pip
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
Note, selecting 'python3-pip' instead of 'pip'
0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.

```

これだとダメで、以下のようにしないといけなかった
```
$ sudo apt remove python3-pip
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
The following packages were automatically installed and are no longer required:
  python-pip-whl python3-wheel
Use 'sudo apt autoremove' to remove them.
The following packages will be REMOVED:
  python3-pip
0 upgraded, 0 newly installed, 1 to remove and 0 not upgraded.
After this operation, 1,274 kB disk space will be freed.
Do you want to continue? [Y/n] y
(Reading database ... 47624 files and directories currently installed.)
Removing python3-pip (20.3.4-4+rpt1+deb11u1) ...
Processing triggers for man-db (2.9.4-2) ...
```