Pythonライブラリの混在について(ubuntu18.04にて調査)
ubuntuでPythonのライブラリを使う場合,ubuntu標準のPythonライブラリ(sudo apt install python3-hoge)を使う方法と,pipのライブラリを使う方法があります。pipについては,sudo管理者権限の実行と,一般ユーザでの実行での違いもあります。どちらかでインストールするともう片方でライブラリが入らなかったり,混在して競合することがあるので,調べたことをメモっておきます。(今回はvenvを使わない前提で。)
インストール先のパス
入れ方 | ①sudo apt install | ②sudo pip install | ③pip install |
---|---|---|---|
インストール先のパス | /usr/lib/python3/dist-packages | /usr/local/lib/python3.6/dist-packages | /home/hoge/.local/lib/python3.6/site-packages/ |
利用シーン | rootが全ユーザに適用したい場合 | rootが全ユーザに適用したい場合 | 一般ユーザが自分自身のみを対象に使う場合 |
優先順位
同じライブラリが入っている場合,パスの順序の優先度が高いものが利用されます。以下の方法で確認できます。
import sys
print(sys.path)
結果はこんな感じ。優先度的には③>②>①の順です。
['', '/usr/lib/python36.zip', '/usr/lib/python3.6', '/usr/lib/python3.6/lib-dynload',
'/home/hoge/.local/lib/python3.6/site-packages', '/usr/local/lib/python3.6/dist-packages',
'/usr/lib/python3/dist-packages']
導入順序による導入可否
①→②
入らない。
Requirement already satisfied: numpy in /usr/lib/python3/dist-packages
と「すでに入ってまっせ」と言われる。
②→①
入る。でも②の方が優先なので,想定した動き(aptで入れたライブラリを使いたい!)をしない。
①→③,②→③
入る。使うときには③が最優先になる。