python – Heroku / Django安装pylibmc时出错

尝试部署到Heroku时,我得到了一英里长的错误列表.我跟着他们的指导开始,但显然它缺乏和不准确.

我的设置是一个模块,我的要求是由每个环境的不同.txt文件组成的文件夹:

settings/
  base.py
  dev.py
  heroku.py

requirements/
  base.txt
  dev.txt
  heroku.txt

我尝试使用pylibmc == 1.2.2 django-pylibmc-sasl == 0.2.4在base.txt和heroku.txt(扩展base.txt)中部署到Heroku,但仍然相同.

Bug trace(小样本):

_pylibmcmodule.c:2097: warning: passing argument 1 of ‘PyInt_FromLong’ makes integer from pointer without a cast

       /app/.heroku/python/include/python2.7/intobject.h:38: note: expected ‘long int’ but argument is of type ‘struct PylibMC_Behavior *’

       _pylibmcmodule.c:2097: warning: passing argument 1 of ‘PyObject_SetAttrString’ from incompatible pointer type

       /app/.heroku/python/include/python2.7/object.h:472: note: expected ‘struct PyObject *’ but argument is of type ‘struct PylibMC_Behavior *’

       _pylibmcmodule.c:2098: error: ‘PylibMC_McErr’ has no member named ‘name’

       _pylibmcmodule.c:2098: error: ‘PylibMC_McErr’ has no member named ‘exc’

       _pylibmcmodule.c:2098: warning: passing argument 2 of ‘PyModule_AddObject’ from incompatible pointer type

       /app/.heroku/python/include/python2.7/modsupport.h:40: note: expected ‘const char *’ but argument is of type ‘struct PylibMC_Behavior *’

       _pylibmcmodule.c:2100: error: ‘PylibMC_McErr’ has no member named ‘name’

       _pylibmcmodule.c:2100: error: ‘PylibMC_McErr’ has no member named ‘exc’

       _pylibmcmodule.c: In function ‘init_pylibmc’:

       _pylibmcmodule.c:2176: error: ‘LIBMEMCACHED_VERSION_STRING’ undeclared (first use in this function)

       _pylibmcmodule.c:2176: warning: passing argument 3 of ‘PyModule_AddStringConstant’ from incompatible pointer type

       /app/.heroku/python/include/python2.7/modsupport.h:42: note: expected ‘const char *’ but argument is of type ‘struct PylibMC_Behavior *’

       error: command 'gcc' failed with exit status 1

       ----------------------------------------
       Command /app/.heroku/python/bin/python -c "import setuptools;__file__='/app/build/pylibmc/setup.py';exec(compile(open(__file__).read().replace('\r\n', '\n'), __file__, 'exec'))" install --single-version-externally-managed --record /tmp/pip-i0GDaz-record/install-record.txt failed with error code 1 in /app/build/pylibmc
       Storing complete log in /app/.pip/pip.log
 !     Heroku push rejected, failed to compile Python app

我找到了this相关帖子,这就是试图将libs添加到base.txt的想法,但仍然没有帮助.

最佳答案 如果您在requirements.txt中出现Pylibmc,则会自动支持它.

拥有所有这些需求文件只是额外的开销.查看Twelve-Factor’s Dev/Prod Parity文章.

点赞