Python のモジュールについて
Python のモジュールをインストールする場合通常はパッケージから行うが、Python を説明したサイトでは pip を使うことを推奨している場合も多い。
そこで今回は、パッケージと pip での動作の違いなどについて説明する。
なお、ここでインストールするパッケージは「whois」で、Python 3.12 を利用してある。
パッケージからのインストール
fedora では Python のモジュールパッケージは「python3-」から始まる。
そこでパッケージとしてインストールする場合は次の様にする。
$ sudo dnf install python3-whois
なお、モジュールがインストールされる場所は、「/usr/lib64/python3.12/」であり、アプリケーションモジュールの場合は「/usr/lib/python3.12」である。
利点
- パッケージとして管理されているので、通常の更新でバージョンアップが行われる。
- 動作テストが行われているので、不具合が少ない。
- バグはパッケージとして管理されている。
- 全てのユーザーが利用できる。
欠点
- バージョンアップが少し遅い。
- pip で管理されているモジュールの中には存在しないものが結構ある。
pip で root からインストール
root で pip を実行した場合、「/usr/local/」の環境にインストールされる。
そこで、root でインストールする場合は次の様にする。
$ sudo pip install whois
なお、モジュールがインストールされる場所は、「/usr/local/lib64/python3.12/」であり、アプリケーションモジュールの場合は「/usr/local/lib/python3.12」である。
利点
- 最新バージョンがインストール出来る。
- 全てのユーザーが利用できる。
欠点
- 十分なテストが行われておらず、バグが混入する場合がある。
- 更新は手動で行う必要がある。
pip でユーザーアカウントからインストール
ユーザーアカウントから pip を実行した場合、「~/.local/」の環境にインストールされる。
そこで、ーザーアカウントからインストールする場合は次の様にする。
$ pip install whois
なお、モジュールがインストールされる場所は、「~/.local/lib/python3.12/」である。
利点
- 最新バージョンがインストール出来る。
欠点
- 十分なテストが行われておらず、バグが混入する場合がある。
- 更新は手動で行う必要がある。
- 他のユーザーは利用できない。
pip で仮想環境にインストール
例えば作成するアプリケーション毎に仮想環境を作成しする事が出来る。
当然に pip も仮想環境にインストールされるので、システムやユーザー環境に影響を及ぼす事もない。
そこで、仮想環境の構築と pip のインストールを説明する。
仮想環境の構築
$ python -m venv env
これで「env」という名前の仮想環境が構築された。
開発するソースなどは全て「env」以下のディレクトリで行うこと。
※ env/lib64 はシンボリックリンクなので利用できない。
- env/include/
- env/lib/
- env/bin/
仮想環境の開始
$ source env/bin/activate
仮想環境での pip
$ pip install whois
なお、モジュールがインストールされる場所は、「env/lib/python3.12/」である。
仮想環境の終了
$ deactivate
pip のバージョン管理
root での場合は「sudo」を前に付けて実行する事。
インストールされている場所やバージョンなどの確認
$ pip show whois
更新可能なモジュールの確認
$ pip list -o
モジュールの更新
$ pip install -U whois
バージョンを指定してのインストール
※ 最新バージョンにバグがある場合などに使用。
※ 「パッケージ名==バージョン」で指定する。
$ pip install whois==1.20240129.2
PYTHONPATH について
Python がライブラリを検索する場所を指定する環境変数「PYTHONPATH」が存在するが、Fedora39 の環境では特に指定する必要はなかった。
必要があれば、「system-python-setting.sh」で以下の様に指定すると良いだろう。
export PYTHONPATH="${PYTHONPATH}:/usr/local/lib64/python:~/.local/lib/python";