Preventing the python and ffmpeg heroku buildpacks from overwriting LD_LIBRARY_PATH

I'm deployng a Django app to heroku, which requires ffmpeg. To accomplish this I am using heroku-buildpack-multi to install both heroku-buildpack-ffmpeg and heroku-buildpack-python, and all of that works fine. The problem is my that app also depends on django-pylibmc-sasl, python-memcached, pylibmc et al. which, as per usual, heroku senses and automatically installs libmemcached for me.

Here's where something goes a little wrong. If I remove the custom buildpack everything runs fine (except for ffmpeg obviously). As soon as I add it in, however, while I can run ffmpeg, python fails on import pylibmc (or rather on import _pylibmc inside the module itself). After a amount of head-scratching I decided to have a look at the environment variables, here's what I got:

With only the Python buildpack enabled:


With both the Python and the ffmpeg buildpacks enabled:


It looks like one or both of the buildpacks simply overwrites the other, or avoids setting the variable should it be already set. The ffmpeg buildpack seems to set LD_LIBRARY_PATH in a way that looks kosher to me, while the Python buildpack does a few things that I don't really understand the reason for.


Anyway, after manually overriding the library path using heroku config:set LD_LIBRARY_PATH=/app/.heroku/vendor/lib:vendor/ffmpeg/lib I am able to use both libmemcached and ffmpeg, but it doesn't feel too robust. What if something changes in one of the buildpacks path settings, or I add another buildpack - then I would have to manually edit the library path variable.

Better solution?

So, while this is not really an urgent question at all, I simply would like to know:

  • Is there a better way of solving this issue?
  • Might I have made some configuration error leading up to the path conflict?
  • Should this be considered a bug in either of the buildpacks?


From a quick glance at the code this may be an issue with heroku-buildpack-python. Look at your ~/.profile (heroku run bash) and look where LD_LIBRARY_PATH is set. My guess is you'll see ffmpeg's first, and then see Python's setting overriding it.

If that's the case you should file a bug.

Need Your Help

yii : How To Have Ajax Validation On A Part Of The Form Showed With An Ajax Event And A Renderpartial?

javascript php jquery ajax yii

I have a problem and I don't know how to solve it... there is a lot of post whith similar things and despite of that, I can't find any solution.