【问题标题】:Preventing the python and ffmpeg heroku buildpacks from overwriting LD_LIBRARY_PATH防止 python 和 ffmpeg heroku buildpacks 覆盖 LD_LIBRARY_PATH
【发布时间】:2014-04-03 12:21:08
【问题描述】:

我正在将一个 Django 应用程序部署到 heroku,这需要 ffmpeg。为此,我使用heroku-buildpack-multi 来安装heroku-buildpack-ffmpegheroku-buildpack-python,所有这些都可以正常工作。问题是我的那个应用程序还依赖于django-pylibmc-saslpython-memcachedpylibmc 等。像往常一样,heroku 会感知并自动为我安装 libmemcached

这里有些地方出了点问题。如果我删除自定义 buildpack 一切运行正常(显然 ffmpeg 除外)。然而,一旦我添加它,虽然我可以运行ffmpeg,python 在import pylibmc(或者更确切地说是在模块本身内部的import _pylibmc)上失败。经过一番摸索后,我决定看一下环境变量,这就是我得到的:

仅启用 Python buildpack:

LD_LIBRARY_PATH=/app/.heroku/vendor/lib

同时启用 Python 和 ffmpeg 构建包:

LD_LIBRARY_PATH=:vendor/ffmpeg/lib

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

解决方案

无论如何,使用heroku config:set LD_LIBRARY_PATH=/app/.heroku/vendor/lib:vendor/ffmpeg/lib 手动覆盖库路径后,我可以同时使用libmemcachedffmpeg,但感觉不太健壮。如果其中一个 buildpacks 路径设置发生变化,或者我添加了另一个 buildpack - 那么我将不得不手动编辑库路径变量。

更好的解决方案?

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

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

【问题讨论】:

  • 问题报告here

标签: python heroku path ffmpeg libmemcached


【解决方案1】:

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

如果是这种情况,您应该提交错误。

【讨论】:

  • 谢谢,好主意!这会产生export LD_LIBRARY_PATH="$LD_LIBRARY_PATH:vendor/ffmpeg/lib"export LD_LIBRARY_PATH=${LD_LIBRARY_PATH:-/app/.heroku/vendor/lib}。因此,heroku-buildpack-python 似乎只会设置尚未设置的库路径。
  • 是的。看起来像是heroku-buildpack-python 中的一个错误,你应该告诉他们。顺便说一句:我不知道heroku-buildpack-multi,但如果您可以指定运行不同构建包的顺序,那么您有一个临时解决方法:首先运行buildpack-python
  • 我认为.buildpacks 文件中的顺序确实指定了构建包的加载顺序,但我得到了相同的结果。我认为 buildpacks 本身可以在编译/设置的不同阶段运行代码,这可能就是为什么更改顺序不起作用的原因。我将创建一个错误报告。感谢您的帮助!
  • 实际上,从头开始。安装在~/.profile.d/ 侧生成ffmpeg.shpython.shheroku docs 表示 .profile.d/ 目录中的脚本将以任意顺序执行”
猜你喜欢
  • 2013-12-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-02-13
  • 2018-06-27
  • 2019-12-03
  • 1970-01-01
  • 2014-07-07
相关资源
最近更新 更多