pipとpythonの関係がよくわかっていないですわ

pipとpythonの関係がよくわかっていないんじゃ!

※pipとpythonの関係を理解できるように色々したログです。正確性は皆無です

python:皆様おなじみ。きっとこの子がプログラムをいい感じに動かせるようにしてくれている。 pip:pythonのモジュールをいい感じに管理してくれるもの。

という理解

で!!!最近気づいたことは、

pythonもpipもそれぞれバージョンがあるみたい。で、バージョンごとにモジュールを管理しているみたい。インストールしたモジュールはpip listで見られる、と思っていたけどpython3.10 -m pip listという書き方をすると、そのpythonのバージョンに対応したpipがどんなモジュールを管理しているのか(インストールしたのか)確認できるみたい。

色々試してみる

今は2つのpythonのバージョンが入っている(いまさっき入れた)

kamosika@kamosika-ThinkPad-E460:~$ ls /usr/lib/python3
python3/    python3.10/ python3.11/ 

で、pip listの結果を比較してみる

こっちがバージョン3.10の方

kamosika@kamosika-ThinkPad-E460:~$ python3.10 -m pip list
Package               Version
--------------------- ----------------
aiohttp               3.8.4
aiosignal             1.3.1
apt-clone             0.2.1
apturl                0.5.2
async-timeout         4.0.2
asyncio               3.4.3
attrs                 23.1.0
beautifulsoup4        4.10.0
blinker               1.4
Brlapi                0.8.3
certifi               2020.6.20
chardet               4.0.0
charset-normalizer    3.1.0
click                 8.0.3
colorama              0.4.4
command-not-found     0.3
configobj             5.0.6
cryptography          3.4.8
cupshelpers           1.0
dbus-python           1.2.18
defer                 1.0.6
distro                1.7.0
eyeD3                 0.8.10
filelock              3.6.0
frozenlist            1.3.3
genshin               1.6.0
省略

こっちがバージョン3.11の方

kamosika@kamosika-ThinkPad-E460:~$ python3.11 -m pip list
Package               Version
--------------------- ----------------
apt-clone             0.2.1
apturl                0.5.2
beautifulsoup4        4.10.0
blinker               1.4
Brlapi                0.8.3
certifi               2020.6.20
chardet               4.0.0
click                 8.0.3
colorama              0.4.4
command-not-found     0.3
configobj             5.0.6
cryptography          3.4.8
cupshelpers           1.0
dbus-python           1.2.18
defer                 1.0.6
distro                1.7.0
eyeD3                 0.8.10
filelock              3.6.0
grpcio                1.30.2
gyp                   0.1
httplib2              0.20.2
idna                  3.3
ifaddr                0.1.7
IMDbPY                2021.4.18
importlib-metadata    4.6.4
jeepney               0.7.1
keyring               23.5.0
launchpadlib          1.10.16
lazr.restfulclient    0.14.4
lazr.uri              1.0.6
louis                 3.20.0
macaroonbakery        1.3.1
Mako                  1.1.3
MarkupSafe            2.0.1
more-itertools        8.10.0
netaddr               0.8.0
netifaces             0.11.0
oauthlib              3.2.0
onboard               1.4.1
packaging             21.3
PAM                   0.4.2
pexpect               4.8.0
Pillow                9.0.1
pip                   22.0.2
protobuf              3.12.4
psutil                5.9.0
ptyprocess            0.7.0
pycairo               1.20.1
pycups                2.0.1
pycurl                7.44.1
pyelftools            0.27
Pygments              2.11.2
PyGObject             3.42.1
PyICU                 2.8.1
pyinotify             0.9.6
PyJWT                 2.3.0
pymacaroons           0.13.0
PyNaCl                1.5.0
pyparsing             2.4.7
pyparted              3.11.7
pyRFC3339             1.1
python-apt            2.4.0+ubuntu2
python-debian         0.1.43+ubuntu1.1
python-gnupg          0.4.8
python-magic          0.4.24
python-xlib           0.29
pytz                  2022.1
pyxdg                 0.27
PyYAML                5.4.1
reportlab             3.6.8
requests              2.25.1
requests-file         1.5.1
SecretStorage         3.3.1
setproctitle          1.2.2
setuptools            59.6.0
six                   1.16.0
soupsieve             2.3.1
systemd-python        234
tinycss2              1.1.1
tldextract            3.1.2
ubuntu-drivers-common 0.0.0
ufw                   0.36.1
Unidecode             1.3.3
urllib3               1.26.5
wadllib               1.3.6
webencodings          0.5.1
wheel                 0.37.1
xdg                   5
xkit                  0.0.0
xlrd                  1.2.0
youtube-dl            2021.12.17
zipp                  1.0.0

3.11の方にはgenshinというライブラリが入っていないけど3.10の方にはあるのでpythonのバージョンに応じてpipがライブラリを管理してくれているっぽい?

ただ、いまさっき3.11を入れたのに、youtube-dlとかが入っているのはなんでなんだろうか?標準で入っているようなものじゃないような気がするけれど。 もしかするとバージョンが違っていても動くライブラリ?的なものをうまく検知してくれて引き継いでくれているのかしら?わからない。

vscodeの謎

vscodeを使っていたりするとpip installしたはずのライブラリなのに、importした際に下線が表示されたりするのはなぜだろうか?

/posts/i_dont_know_pip_and_python_relationsip/vscode1.png

多分vscodeの右下に書かれているpythonでファイルを実行するはず、今はpython3.10が指定されているね。 ここを変更してみる

/posts/i_dont_know_pip_and_python_relationsip/vscode2.png

すると見ての通り、下線が引かれるようになった。

これはpythonのバージョン3.11ではgenshinというライブラリをインストールしていないからだろうね?

インストールしていみるとどうなるかを確認する

kamosika@kamosika-ThinkPad-E460:~/code/genshin_resin_test$ python3.11 -m pip install genshin
Defaulting to user installation because normal site-packages is not writeable
Collecting genshin
  Downloading genshin-1.6.1-py3-none-any.whl (118 kB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 118.7/118.7 KB 1.3 MB/s eta 0:00:00

その後にpip listをしてみる

kamosika@kamosika-ThinkPad-E460:~/code/genshin_resin_test$ python3.11 -m pip list
Package               Version
--------------------- ----------------
aiohttp               3.9.1
aiosignal             1.3.1
annotated-types       0.6.0
apt-clone             0.2.1
apturl                0.5.2
attrs                 23.1.0
beautifulsoup4        4.10.0
blinker               1.4
Brlapi                0.8.3
certifi               2020.6.20
chardet               4.0.0
click                 8.0.3
colorama              0.4.4
command-not-found     0.3
configobj             5.0.6
cryptography          3.4.8
cupshelpers           1.0
dbus-python           1.2.18
defer                 1.0.6
distro                1.7.0
eyeD3                 0.8.10
filelock              3.6.0
frozenlist            1.4.0
genshin               1.6.1
省略

するとgenshinが入っているのが確認できる

vscodeの右下から使用するpythonを何回か選択し直すと下線部が消えた(多分vscodeの再起動とかでもいいんじゃないかな?)

/posts/i_dont_know_pip_and_python_relationsip/vscode3.png

そしてgenshinモジュールをimportするようなコードを実行することもできた!!

ここでパッケージを消してみると

kamosika@kamosika-ThinkPad-E460:~/code/genshin_resin_test$ python3.11 -m pip uninstall genshin
Found existing installation: genshin 1.6.1
Uninstalling genshin-1.6.1:
  Would remove:
    /home/kamosika/.local/lib/python3.11/site-packages/genshin-1.6.1.dist-info/*
    /home/kamosika/.local/lib/python3.11/site-packages/genshin/*
    /home/kamosika/.local/lib/python3.11/site-packages/tests/*
Proceed (Y/n)? 
  Successfully uninstalled genshin-1.6.1

/posts/i_dont_know_pip_and_python_relationsip/vscode4.png

すると下線部が表示されるようになるし、実行もできなくなる。

けど、ここでpythoon3.10に変更すると実行できるようになる(エラーが出ているのは別の問題)

/posts/i_dont_know_pip_and_python_relationsip/vscode5.png

こうするとpythonのバージョンごとにpipはライブラリを管理しているんだなぁ・・・っていうのがわかる気がする。

なのでpipでインストールしたのになんか見つからな〜いっていう場合には、別のpythonのバージョン用の?ライブラリをインストールしているのかなぁなんて思います。

もしくは使用しているpythonのバージョンが違っているとか

余談

最新のラズパイOS?でpythonを使うときには仮想環境?を使用する必要があるとかないとか聞いたことがある気がするので、そういったvenvを利用すると、ライブラリがない・・・問題が起きにくいかもしれませんね。

あと、自分のパソコンでvenvを使用しようと思ったら、エラーが出てきてしまいました・・・Ubuntu?はバージョンごとにvenvも別で撮ってくる必要?があるみたいなのかな?(インストール方法によるのかもしれないけ)

Error when creating venv, Error: Command ‘-Im’, ‘ensurepip’, ‘–upgrade’, ‘–default-pip’]' returned non-zero exit status 1]

ここの内容を参考にするとできるようになりました。

Comments: