背景
Python/Djangoで開発をすすめるにあたり、よく使うコマンドをまとめておきます。
先人たちの知恵をお借りするなどして解決できたことを、この場をお借りして感謝するとともに、大変恐縮ですが自分のメモとしても、こちらへまとめておきます。
環境
(本番環境)
- AWS EC2 (Amazon Linux 2)
- Python 3.7.9 ※2020/12/10時点のAmazon Linux2でのデフォルト
- Django 3.1.3
- PostgreSQL 11.5 ※同上
- Nginx 1.12 ※同上
- Gunicorn
- Putty 0.74
(開発環境)
- Windwos 10 Pro
- Python 3.9.0
- Django 3.1.3
- PostgreSQL 13.1
- Nginx 1.19.5
- Gunicorn
- Putty 0.74
1. パッケージソフトウェアのインストール
Pythonは「pip」コマンドを用いて、多種多様なパッケージソフトウェアをインターネット経由で簡単にインストールできます。
なお、どのようなパッケージソフトがあるかは、PyPI(The Pyhon Package Index) にて確認ができます。
Python仮想環境に入り、下記を実行します。
(venv_<プロジェクト名>)$ pip install django 最新バージョンをインストールする場合
(venv_<プロジェクト名>)$ pip install django==3.1.3 指定するバージョンをインストールする場合
インストールしたパッケージのバージョンは、下記で確認できます。
(venv_<プロジェクト名>)$ python -m django -- version
3.1.3
他のパッケージのインストール(例)
(venv_<プロジェクト名>)$ pip install psycopg2-binary
(venv_<プロジェクト名>)$ pip install django-allauth
(venv_<プロジェクト名>)$ pip install pillow
(venv_<プロジェクト名>)$ pip install selenium
(venv_<プロジェクト名>)$ pip install boto django-ses
(venv_<プロジェクト名>)$ pip install gunicorn
モジュール名 | 説明 |
---|---|
psycopg2-binary | PostgreSQLへPythonから接続する際に用いるドライバ ※2020/12時点では、psycopg3 を開発中とのこと |
django-allauth | ローカルおよびソーシャル認証をサポートする認証機能パッケージ |
pillow | WEBアプリケーションを通してアップロードされた静的ファイルを扱う際に用いるパッケージ |
selenium | Live Server Test Caseクラスを使ったテスト方法で用いるパッケージ ※別途Chrome用ドライバが必要 |
django-ses | Amazon SES(Simple Email Service)を利用する際に必要なパッケージ |
gunicorn | (Green Unicornの略) Pythonのwsgi(Web Server Gateway Interface)HTTPサーバー |
番外編:pip自体のアップグレード
ときどき、pip自体もバージョンアップしているため、pipコマンドを実行すると『アップグレードしてね!』とお願いされます。
そのようなときは、下記を実行します。
$ python -m pip install --upgrade pip
2. インストール済みモジュール一覧の作成
Python開発環境にインストールしたモジュールをファイルに書き出します。
その後、その書き出したファイルを基に、本番環境へモジュールをインストールします。
2-1. インストールしたモジュール一覧をファイルに出力する。
(venv_<プロジェクト名>)$ pip freeze > requirements.txt
appdirs==1.4.4
astroid==2.4.2
beautifulsoup4==4.9.3
certifi==2020.11.8
chardet==3.0.4
colorama==0.4.4
distlib==0.3.1
filelock==3.0.12
idna==2.10
isort==5.6.4
lazy-object-proxy==1.4.3
mccabe==0.6.1
numpy==1.19.4
pandas==1.1.4
Pillow==8.0.1
pipenv==2020.11.15
pylint==2.6.0
python-dateutil==2.8.1
pytz==2020.4
requests==2.25.0
selenium==3.141.0
six==1.15.0
soupsieve==2.0.1
toml==0.10.2
urllib3==1.26.2
virtualenv==20.1.0
virtualenv-clone==0.5.4
wrapt==1.12.1
2-2. 書き出した requirements.txt を、本番運用環境のホームディレクトリへ転送する。
※ PuTTYや、WinSCP を用います。
※ PuTTY を利用して、Amazon EC2(Elastic Compute Cloud)へ接続する際は、「PuTTY を使用した Windows から Linux インスタンスへの接続」をご参照ください。
2-3. python仮想環境に入り、下記を実行し、インストールを実行する。
(venv_<プロジェクト名>)$ pip install -r requirements.txt
(関連)
【Python/Django】よく使うコマンドのまとめ(1) <仮想環境、プロジェクト、アプリケーションの作成>
【Python/Django】よく使うコマンドのまとめ(3) <PostgreSQLの操作>
【Python/Django】よく使うコマンドのまとめ(4)-前編- <本番運用:Amazon EC2 (Amazon Linux 2)>
【Python/Django】よく使うコマンドのまとめ(4)-後編- <本番運用:Amazon EC2 (Amazon Linux 2)>
(編集後記)
インストールを忘れがちなのが、意外に django-ses です。
テスト時は、コンソールにログやメール内容を出力させていることも一因ですが、アプリケーション作成を始めたばかりの頃は、マイグレーション時に、よく『django-ses が足りない!』と怒られました。
ユーザー認証を介したり問い合わせフォームを設置したりするWEBサイトやWEBアプリケーションを作成する際は、必ずと言って良いほど django-ses のお世話になるはずですので、インストールするパッケージにも意識を向けて、開発をすすめたいと思います。