防止python和ffmpeg heroku构建包覆盖LD_LIBRARY_路径

2024-09-27 18:03:57 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在为heroku部署一个Django应用程序,它需要ffmpeg。为了实现这一点,我使用heroku-buildpack-multi来安装heroku-buildpack-ffmpeg和{a3},所有这些都很好。问题是我的应用程序也依赖于django-pylibmc-saslpython-memcachedpylibmc等。像往常一样,heroku会感应并自动为我安装libmemcached。在

这里有点不对劲。如果我删除自定义的buildpack,一切都会正常运行(显然除了ffmpeg)。但是,一旦我添加了它,当我可以运行ffmpeg时,python就在import pylibmc(或者更确切地说是模块内部的import _pylibmc)上失败。在绞尽脑汁之后,我决定看看环境变量,以下是我得到的:

仅启用Python构建包:

LD_LIBRARY_PATH=/app/.heroku/vendor/lib

同时启用Python和ffmpeg构建包:

^{pr2}$

看起来,一个或两个构建包只是覆盖另一个,或者避免设置已经设置的变量。ffmpeg构建包似乎在a way that looks kosher to me中设置了LD_LIBRARY_PATH,而Python构建包却设置了a fewthings,我真的不明白其中的原因。在

解决方案

无论如何,在使用heroku config:set LD_LIBRARY_PATH=/app/.heroku/vendor/lib:vendor/ffmpeg/lib手动重写库路径之后,我可以同时使用libmemcached和{},但感觉不太健壮。如果某个buildpacks路径设置发生更改,或者我添加了另一个buildpack,那么我必须手动编辑library path变量。在

更好的解决方案?在

所以,虽然这根本不是一个紧迫的问题,但我只想知道:

  • 有没有更好的方法来解决这个问题?在
  • 我是否可能犯了导致路径冲突的配置错误?在
  • 这应该被认为是两个构建包中的一个bug吗?在

Tags: pathimport路径app应用程序herokuliblibrary
1条回答
网友
1楼 · 发布于 2024-09-27 18:03:57

快速浏览代码,这可能是heroku-buildpack-python的问题。查看您的~/.profileheroku run bash),并查看LD_LIBRARY_PATH的设置位置。我猜您将首先看到ffmpeg的,然后看到Python的设置覆盖了它。在

如果是这样的话,你应该提交一个bug。在

相关问题 更多 >

    热门问题