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した際に下線が表示されたりするのはなぜだろうか?
多分vscodeの右下に書かれているpythonでファイルを実行するはず、今はpython3.10が指定されているね。 ここを変更してみる
すると見ての通り、下線が引かれるようになった。
これは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の再起動とかでもいいんじゃないかな?)
そして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
すると下線部が表示されるようになるし、実行もできなくなる。
けど、ここでpythoon3.10に変更すると実行できるようになる(エラーが出ているのは別の問題)
こうするとpythonのバージョンごとにpipはライブラリを管理しているんだなぁ・・・っていうのがわかる気がする。
なのでpipでインストールしたのになんか見つからな〜いっていう場合には、別のpythonのバージョン用の?ライブラリをインストールしているのかなぁなんて思います。
もしくは使用しているpythonのバージョンが違っているとか
余談
最新のラズパイOS?でpythonを使うときには仮想環境?を使用する必要があるとかないとか聞いたことがある気がするので、そういったvenvを利用すると、ライブラリがない・・・問題が起きにくいかもしれませんね。
あと、自分のパソコンでvenvを使用しようと思ったら、エラーが出てきてしまいました・・・Ubuntu?はバージョンごとにvenvも別で撮ってくる必要?があるみたいなのかな?(インストール方法によるのかもしれないけ)
ここの内容を参考にするとできるようになりました。