[Django]本番環境にローカル環境と同じパッケージを一括でインストールする方法
Djangoの本番環境や第三者がローカル環境を構築する時に、パッケージを一括でpip installしてくれる方法を紹介します。
本番環境にローカルと同じパッケージをまとめてインストールする
Djangoアプリケーションを本番環境にアップロードした場合、ローカルではうまく動作していたのにエラーが起こるケースがあります。
その中の理由の1つとしてモジュールが見つからないというものがありますが、要は特定モジュールをインストールしていないことによるエラーです。
本番環境でも1つずつpip installしていけばOKなわけですが、パッケージが複数ある場合、面倒ですよね。
漏れがあるケースもあります。そういった時にDjangoではrequirements.txtを使うことでパッケージをまとめてインストールすることができます。
requirements.txtでまとめてパッケージをインストールする
requirements.txtと名前を付けたテキストファイルにそれぞれのパッケージの名称とバージョンを記載するだけでOKです。
Django==2.1.2 cssselect==1.0.3 django-bootstrap4==0.0.7 lxml==4.2.5 requests==2.20.0 urllib3==1.24
簡単ですね。
ちなみにrequirements.txtファイルの場所はプロジェクトの直下です。
manage.pyと同じ階層になります。
そして、今インストールしているパッケージのバージョンが分からない場合は以下のコードで確認できます。
$ pip freeze cssselect==1.0.3 Django==2.1.2 django-bootstrap4==0.0.7 lxml==4.2.5 requests==2.20.0 urllib3==1.24
これをそのままコピペしてrequirements.txtに貼り付けるだけでOKです。
が、しかし、これよりも簡単な方法があります。
$ pip freeze > requirements.txt
このコマンドだけで自動的にpip installしているパッケージをrequirements.txtファイルを作成し反映してくれます。実行はmanage.pyがあるディレクトリで行います。
ちなみに開発を進めていく中で新しいパッケージをインストールをした場合でも、
$ pip freeze > requirements.txt
とすれば追加分を更新してくれます。本番環境にデプロイす時にしておけば漏れがないと思います。
本番環境でrequirements.txtを使ってインストールする
$ pip install -r requirements.txt
上記コマンドでテキストファイルに書かれているパッケージを一括でインストールしてくれます。
本番環境や共同開発している人のローカル環境などで使えると思います。