HerokuでDjangoを使うときに外部からパッケージをインストールする

簡単にウェブアプリをデプロイできるwebサービスにHerokuがあります。

通常、Herokuはサーバーへのパッケージをインストールはpipが用いられますが、ときには自分でちょっとカスタマイズしたパッケージを利用したいときもありますよね。

あるいは、既存のパッケージにバグを発見して、自分で修正しそれを利用したい場合など。

ここには、HerokuにDjangoアプリをデプロイするとき標準のpypi.org以外からパッケージをインストールする方法を載せておきます。

この話は、公式ページ(英語)に詳しく載ってるのでそっちを見たほうが詳しいかも。

日本語の情報が少なかったのでこの記事にまとめてみました。

通常利用

通常、pythonを利用する場合 必要なパッケージはrequirements.txtにpip freeze の出力をそのまま書き込みます。

certifi==2018.8.24
dj-database-url==0.5.0
Django==2.0.8
django-heroku==0.3.1
gunicorn==19.9.0
pytz==2018.5
requests==2.19.1
urllib3==1.23
whitenoise==4.1
wincertstore==0.2

ローカルのパッケージを利用する

gitのリポジトリに追加してしまえば早いのですが、それ以外にもローカルの環境にインストールしたパッケージをカスタマイズした場合に使える方法です。

requirements.txt

certifi==2018.8.24
dj-database-url==0.5.0
Django==2.0.8
django-heroku==0.3.1
gunicorn==19.9.0
pytz==2018.5
requests==2.19.1
urllib3==1.23
whitenoise==4.1
wincertstore==0.2
./path/to/distribution

最後の行のように、そのパッケージまでのパスを書いておきます。

別の場所のパッケージを利用する

先ほど同様に、
requirements.txt

certifi==2018.8.24
dj-database-url==0.5.0
Django==2.0.8
django-heroku==0.3.1
gunicorn==19.9.0
pytz==2018.5
requests==2.19.1
urllib3==1.23
whitenoise==4.1
wincertstore==0.2
http://download.pytorch.org/whl/cpu/torch-0.4.1-cp36-cp36m-linux_x86_64.whl

みたいな感じでそのパッケージのDL先を書いておきます。

あとは、通常通りgit push heroku masterを実行すれば、パッケージのインストールはHeroku側でよしなにやってくれます。