Django アプリを heroku にデプロイしていますが、これには ffmpeg が必要です。これを達成するために、heroku-buildpack-multiを使用して heroku -buildpack-ffmpegとheroku-buildpack-python の両方をインストールしていますが、すべて正常に動作します。django-pylibmc-sasl
問題は、アプリも、、、などpython-memcached
に依存していることですpylibmc
。いつものように、heroku が感知して自動的にインストールlibmemcached
してくれます。
ここで、少し問題が発生します。カスタム ビルドパックを削除すると、すべて正常に動作します (明らかに ffmpeg を除く)。ただし、追加するとすぐに、実行できますがffmpeg
、pythonは失敗しますimport pylibmc
(またはimport _pylibmc
、モジュール自体の内部で)。頭を悩ませた後、環境変数を確認することにしました。得られたものは次のとおりです。
Python ビルドパックのみを有効にした場合:
LD_LIBRARY_PATH=/app/.heroku/vendor/lib
Python と ffmpeg ビルドパックの両方が有効になっている場合:
LD_LIBRARY_PATH=:vendor/ffmpeg/lib
ビルドパックの一方または両方が単純に他方を上書きするか、変数が既に設定されている場合は設定を回避しているようです。ffmpeg ビルドパックは、私にはコーシャに見えるように設定されているようですがLD_LIBRARY_PATH
、Python ビルドパックは、理由がよくわからないいくつかのことを行います。
解決
とにかく、 を使用してライブラリ パスを手動でオーバーライドした後、とのheroku config:set LD_LIBRARY_PATH=/app/.heroku/vendor/lib:vendor/ffmpeg/lib
両方を使用できますが、堅牢すぎるとは感じません。ビルドパック パス設定の 1 つで何かが変更された場合、または別のビルドパックを追加した場合は、ライブラリ パス変数を手動で編集する必要があります。libmemcached
ffmpeg
より良い解決策?
ですから、これは緊急の質問ではありませんが、私が知りたいのは次のとおりです。
- この問題を解決するより良い方法はありますか?
- パスの競合につながる構成エラーが発生した可能性がありますか?
- これはいずれかのビルドパックのバグと見なす必要がありますか?