[Django]本番環境にローカル環境と同じパッケージを一括でインストールする方法

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

上記コマンドでテキストファイルに書かれているパッケージを一括でインストールしてくれます。

本番環境や共同開発している人のローカル環境などで使えると思います。



カテゴリー