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側でよしなにやってくれます。