1

Django アプリを heroku にデプロイしていますが、これには ffmpeg が必要です。これを達成するために、heroku-buildpack-multiを使用して heroku -buildpack-ffmpegheroku-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 つで何かが変更された場合、または別のビルドパックを追加した場合は、ライブラリ パス変数を手動で編集する必要があります。libmemcachedffmpeg

より良い解決策?

ですから、これは緊急の質問ではありませんが、私が知りたいのは次のとおりです。

  • この問題を解決するより良い方法はありますか?
  • パスの競合につながる構成エラーが発生した可能性がありますか?
  • これはいずれかのビルドパックのバグと見なす必要がありますか?
4

1 に答える 1

1

コードをざっと見ると、これは の問題である可能性がありますheroku-buildpack-python。あなたの~/.profile( heroku run bash) を見て、どこLD_LIBRARY_PATHに設定されているかを見てください。私の推測ではffmpeg、最初に が表示され、次に Python の設定がそれをオーバーライドするのが表示されます。

その場合は、バグを報告する必要があります。

于 2014-03-03T08:22:34.207 に答える