見出し画像

[Lightsail Django]No7 Bitnamiパッケージでpipを使用する際にはインストール先に注意

1から環境構築し、1からpipでライブラリをインストールする場合であれば、インストール先のディレクトリを間違うことは少ないかと思いますが、Bitnamiパッケージを使用する場合は、すでにpipでインストール済みのライブラリがあるため、追加でpipでインストールする際には、インストール先のライブラリ場所を気をつける必要があります。

pipについておさらいしつつ、django-allauthをpipでインストールを例にあげ、
整理して行きます。


1.pipについて

pipとは、Python のパッケージ管理システムで、ライブラリをインストールしたりアップデートしたりするための機能です。

2.Bitnamiではどこにインストールするかを確認する

2-1.Djangoのインストール先で判断する。

Djangoのインストール先を確認することで、Bitnamiではpipでどこにインストールされているかが判断できるかと思います。

2-2.pipでインストールされているリストを表示する

pip list
DEPRECATION: Loading egg at /opt/bitnami/python/lib/python3.11/site-packages/pip-23.3.1-py3.11.egg is deprecated. pip 23.3 will enforce this behaviour change. A possible replacement is to use pip for package installation..
Package            Version
------------------ --------
asgiref            3.7.2
certifi            2024.2.2
cffi               1.16.0
charset-normalizer 3.3.2
cryptography       42.0.2
defusedxml         0.7.1
distlib            0.3.7
Django             4.2.7
django-allauth     0.61.0
filelock           3.13.1
idna               3.6
mysqlclient        1.4.6
oauthlib           3.2.2
pip                23.2.1
pip                23.3.1
platformdirs       3.11.0
psycopg2           2.9.9
pycparser          2.21
PyJWT              2.8.0
python3-openid     3.2.0
requests           2.31.0
requests-oauthlib  1.3.1
setuptools         68.2.2
sqlparse           0.4.4
urllib3            2.2.0
virtualenv         20.24.6

2-3.ライブラリの詳細を確認

ライブラリの詳細は、pip show [ライブラリ名]で確認でき、ライブラリ名は上記pip listの結果を元に指定します。

また出力結果のLocation項目がライブラリのインストール先となります。

# pip show [ライブラリ名]
pip show Django
DEPRECATION: Loading egg at /opt/bitnami/python/lib/python3.11/site-packages/pip-23.3.1-py3.11.egg is deprecated. pip 23.3 will enforce this behaviour change. A possible replacement is to use pip for package installation..
Name: Django
Version: 4.2.7
Summary: A high-level Python web framework that encourages rapid development and clean, pragmatic design.
Home-page: https://www.djangoproject.com/
Author: Django Software Foundation
Author-email: foundation@djangoproject.com
License: BSD-3-Clause
Location: /opt/bitnami/python/lib/python3.11/site-packages
Requires: asgiref, sqlparse
Required-by: django-allauth

3.ライブラリのインストール

3-1.ライブラリのディレクトリに書き込み権限を付与

インストール先のライブラリディレクトリの権限を確認し、必要に応じ権限の付与をして行きます。

# 権限を確認
ls -ltr /opt/bitnami/python/lib/python3.11/ | grep site-packages
drwxr-xr-x 27 root root   4096 Nov 15 18:13 site-packages
# 書き込み権限がないので書き込み権限を追加する
sudo chmod 777 /opt/bitnami/python/lib/python3.11/site-packages
# 権限を確認
ls -ltr /opt/bitnami/python/lib/python3.11/ | grep site-packages
drwxrwxrwx 27 root root   4096 Nov 15 18:13 site-packages

3-2.ライブラリのディレクトリについて

標準ライブラリディレクトリ
site-packagesディレクトリ
ユーザ別site-packagesディレクトリ
(pip installのオプションにより変わる)

3-3.ディレクトリを指定しdjango-allauthをインストール

pip install django-allauth -t /opt/bitnami/python/lib/python3.11/site-packages

4.インストールし直す場合

4-1.インストールディレクトリを間違えた場合

uninstallコマンドで削除する

pip uninstall django-allauth
Found existing installation: django-allauth 0.61.0
Uninstalling django-allauth-0.61.0:
  Would remove:
    /home/bitnami/.local/lib/python3.11/site-packages/allauth/*
    /home/bitnami/.local/lib/python3.11/site-packages/django_allauth-0.61.0.dist-info/*
Proceed (Y/n)? Y
  Successfully uninstalled django-allauth-0.61.0

4-2.補足

Bitnamiパッケージ環境にて、ディレクトリ指定しないでpip installした場合はhomeディレクトリにライブラリがインストールされました。
(aullauth関連のエラーがずっと出続けててかなりハマっていましたが、原因はインストール先のディレクトリが間違っていました。。)

pip show django-allauth
DEPRECATION: Loading egg at /opt/bitnami/python/lib/python3.11/site-packages/pip-23.3.1-py3.11.egg is deprecated. pip 23.3 will enforce this behaviour change. A possible replacement is to use pip for package installation..
Name: django-allauth
Version: 0.61.0
Summary: Integrated set of Django applications addressing authentication, registration, account management as well as 3rd party (social) account authentication.
Home-page: https://allauth.org
Author: Raymond Penners
Author-email: raymond.penners@intenct.nl
License: MIT
Location: /home/bitnami/.local/lib/python3.11/site-packages
Requires: Django, pyjwt, python3-openid, requests, requests-oauthlib
Required-by: 

その他

その他、amazon LightsailにてDjangoを使用したWEBアプリ構築については以下となります。(こちらの記事は以下記事の続きとなります。)



いいなと思ったら応援しよう!