15

私はこれに多くの時間を費やしました、そしてそれは明らかに私の初心者の理解/スキルを超えています。django-heroku-memcacheifyをpipinstallでインストールしようとしましたが、エラーが発生します。私はすべての問題を引き起こしているpylibmcまで問題を追跡しました。エラーログの興味深い部分の1つを次に示します。

_pylibmcmodule.h:42:36:エラー:libmemcached / memcached.h:そのようなファイルまたはディレクトリはありません

これが(ほぼ)完全なトレースバックです:

-----> Heroku receiving push
-----> Fetching custom buildpack... done
-----> Python app detected
-----> Preparing Python interpreter (2.7.2)
-----> Creating Virtualenv version 1.7.2
 !     CLEAN_VIRTUALENV set, rebuilding virtualenv.
       Running virtualenv with interpreter /usr/local/bin/python2.7
       New python executable in .heroku/venv/bin/python2.7
       Not overwriting existing python script .heroku/venv/bin/python (you must
use .heroku/venv/bin/python2.7)
       Installing         distribute..................................................................................................................................................................................................done.
   Installing pip................done.
-----> Activating virtualenv
-----> Installing dependencies using pip version 1.1
       Requirement already satisfied (use --upgrade to upgrade): Django==1.4 in
./.heroku/venv/lib/python2.7/site-packages (from -r requirements/common.txt (line 2))
       Requirement already satisfied (use --upgrade to upgrade): gunicorn==0.14.3 in     ./.heroku/venv/lib/python2.7/site-packages (from -r requirements/common.txt (line   3))
       Requirement already satisfied (use --upgrade to upgrade): PIL==1.1.7 in    ./.heroku/venv/lib/python2.7/site-packages/PIL (from -r requirements/common.txt (line 4))
       Requirement already satisfied (use --upgrade to upgrade): South==0.7.5 in    ./.heroku/venv/lib/python2.7/site-packages (from -r requirements/common.txt (line 5))
       Requirement already satisfied (use --upgrade to upgrade): boto==2.1.1 in
./.heroku/venv/lib/python2.7/site-packages (from -r requirements/common.txt (line 6))
       Downloading/unpacking distribute==0.6.10 (from -r requirements/common.txt (line 7))
         Using download cache from /app/tmp/repo.git/.cache/pip_downloads/http%3A%2F%2Fpypi.python.org%2Fpackages%2Fsource%2Fd%2Fdistribute%2Fdistribute-0.6.10.tar.gz
         Running setup.py egg_info for package distribute

       Requirement already satisfied (use --upgrade to upgrade): python-dateutil==1.5 in ./.heroku/venv/lib/python2.7/site-packages (from -r requirements/common.txt (line 8))
       Requirement already satisfied (use --upgrade to upgrade): six==1.1.0 in ./.heroku/venv/lib/python2.7/site-packages (from -r requirements/common.txt (line 9))
       Requirement already satisfied (use --upgrade to upgrade): django-appconf==0.5 in ./.heroku/venv/lib/python2.7/site-packages (from -r requirements/common.txt (line 10))
       Requirement already satisfied (use --upgrade to upgrade): dj-database-url==0.2.0 in ./.heroku/venv/lib/python2.7/site-packages (from -r requirements/common.txt (line 11))
       Downloading/unpacking django-compressor==dev (from -r requirements/common.txt (line 12))
         Using download cache from /app/tmp/repo.git/.cache/pip_downloads/http%3A%2F%2Fgithub.com%2Fjezdez%2Fdjango_compressor%2Ftarball%2Fdevelop
         Cannot determine compression type for file /app/tmp/repo.git/.cache/pip_downloads/http%3A%2F%2Fgithub.com%2Fjezdez%2Fdjango_compressor%2Ftarball%2Fdevelop
         Running setup.py egg_info for package django-compressor

         Requested django-compressor==dev (from -r requirements/common.txt (line 12)), but installing version 1.2a2
       Requirement already satisfied (use --upgrade to upgrade): django-crispy-forms==1.1.2 in ./.heroku/venv/lib/python2.7/site-packages (from -r requirements/common.txt (line 13))
       Requirement already satisfied (use --upgrade to upgrade): django-extensions==0.9 in ./.heroku/venv/lib/python2.7/site-packages (from -r requirements/common.txt (line 14))
       Requirement already satisfied (use --upgrade to upgrade): django-facebook==4.0.9 in ./.heroku/venv/lib/python2.7/site-packages (from -r requirements/common.txt (line 15))
       Requirement already satisfied (use --upgrade to upgrade): django-floppyforms==1.0 in ./.heroku/venv/lib/python2.7/site-packages (from -r requirements/common.txt (line 16))
       Requirement already satisfied (use --upgrade to upgrade): django-guardian==1.0.4 in ./.heroku/venv/lib/python2.7/site-packages (from -r requirements/common.txt (line 17))
       Requirement already satisfied (use --upgrade to upgrade): django-image-cropping==0.5 in ./.heroku/venv/lib/python2.7/site-packages (from -r requirements/common.txt (line 18))
       Requirement already satisfied (use --upgrade to upgrade): django-ratings==0.3.6 in ./.heroku/venv/lib/python2.7/site-packages (from -r requirements/common.txt (line 19))
       Requirement already satisfied (use --upgrade to upgrade): django-smuggler==0.3 in ./.heroku/venv/lib/python2.7/site-packages (from -r requirements/common.txt (line 20))
       Requirement already satisfied (use --upgrade to upgrade): django-storages==1.1.4 in ./.heroku/venv/lib/python2.7/site-packages (from -r requirements/common.txt (line 21))
       Requirement already satisfied (use --upgrade to upgrade): django-subdomains==1.2.1 in ./.heroku/venv/lib/python2.7/site-packages (from -r requirements/common.txt (line 22))
       Requirement already satisfied (use --upgrade to upgrade): django-s3-folder-storage==0.1 in ./.heroku/venv/lib/python2.7/site-packages (from -r requirements/common.txt (line 23))
       Requirement already satisfied (use --upgrade to upgrade): django-userena==1.1.0 in ./.heroku/venv/lib/python2.7/site-packages (from -r requirements/common.txt (line 24))
       Requirement already satisfied (use --upgrade to upgrade): Whoosh==2.4.0 in ./.heroku/venv/lib/python2.7/site-packages (from -r requirements/common.txt (line 25))
       Requirement already satisfied (use --upgrade to upgrade): brabeion==0.1 in ./.heroku/venv/lib/python2.7/site-packages (from -r requirements/common.txt (line 26))
       Requirement already satisfied (use --upgrade to upgrade): versiontools==1.9.1 in ./.heroku/venv/lib/python2.7/site-packages (from -r requirements/common.txt (line 27))
       Obtaining django-haystack from git+https://github.com/toastdriven/django-haystack.git@25bd361d3c64cc22a1090a5053465939647d973d#egg=django_haystack-dev (from -r requirements/common.txt (line 28))
         Updating ./.heroku/src/django-haystack clone (to 25bd361d3c64cc22a1090a5053465939647d973d)
         Could not find a tag or branch '25bd361d3c64cc22a1090a5053465939647d973d', assuming commit.
         Running setup.py egg_info for package django-haystack

       Obtaining django-taggit from git+git://github.com/shacker/django-taggit.git@7987beaf357f8d3621c7fbce3b6753dd21962ee7#egg=django_taggit-dev (from -r requirements/common.txt (line 29))
         Updating ./.heroku/src/django-taggit clone (to 7987beaf357f8d3621c7fbce3b6753dd21962ee7)
         Could not find a tag or branch '7987beaf357f8d3621c7fbce3b6753dd21962ee7', assuming commit.
         Running setup.py egg_info for package django-taggit

       Obtaining django-generic-aggregation from git+git://github.com/coleifer/django-generic-aggregation.git@c76408c2c002dcab6bfc3148760ee58a19cbe05e#egg=django_generic_aggregation-dev (from -r requirements/common.txt (line 30))
         Updating ./.heroku/src/django-generic-aggregation clone (to c76408c2c002dcab6bfc3148760ee58a19cbe05e)
         Could not find a tag or branch 'c76408c2c002dcab6bfc3148760ee58a19cbe05e', assuming commit.
         Running setup.py egg_info for package django-generic-aggregation

       Requirement already satisfied (use --upgrade to upgrade): easy-thumbnails==1.0.3 in ./.heroku/venv/lib/python2.7/site-packages (from -r requirements/common.txt (line 31))
       Requirement already satisfied (use --upgrade to upgrade): docutils==0.9 in ./.heroku/venv/lib/python2.7/site-packages (from -r requirements/common.txt (line 32))
       Requirement already satisfied (use --upgrade to upgrade): httplib2==0.7.4 in ./.heroku/venv/lib/python2.7/site-packages (from -r requirements/common.txt
(line 33))
       Requirement already satisfied (use --upgrade to upgrade): reportlab==2.5
in ./.heroku/venv/lib/python2.7/site-packages (from -r requirements/common.txt (line 34))
       Requirement already satisfied (use --upgrade to upgrade): wsgiref==0.1.2
in /usr/local/lib/python2.7 (from -r requirements/common.txt (line 35))
       Downloading/unpacking django-pylibmc-sasl==0.2.4 (from -r requirements/prod.txt (line 3))
         Downloading django-pylibmc-sasl-0.2.4.tar.gz
         Storing download in cache at /app/tmp/repo.git/.cache/pip_downloads/http%3A%2F%2Fpypi.python.org%2Fpackages%2Fsource%2Fd%2Fdjango-pylibmc-sasl%2Fdjango-pylibmc-sasl-0.2.4.tar.gz
         Running setup.py egg_info for package django-pylibmc-sasl

       Requirement already satisfied (use --upgrade to upgrade): psycopg2==2.4.5 in     ./.heroku/venv/lib/python2.7/site-packages (from -r requirements/prod.txt (line 4))
       Downloading/unpacking pylibmc==1.2.3 (from -r requirements/prod.txt (line 5))
         Storing download in cache at /app/tmp/repo.git/.cache/pip_downloads/http%3A%2F%2Fpypi.python.org%2Fpackages%2Fsource%2Fp%2Fpylibmc%2Fpylibmc-1.2.3.tar.gz
         Running setup.py egg_info for package pylibmc

       Downloading/unpacking django-heroku-memcacheify==0.3 (from -r requirements/prod.txt (line 6))
         Downloading django-heroku-memcacheify-0.3.tar.gz
         Storing download in cache at /app/tmp/repo.git/.cache/pip_downloads/http%3A%2F%2Fpypi.python.org%2Fpackages%2Fsource%2Fd%2Fdjango-heroku-memcacheify%2Fdjango-heroku-memcacheify-0.3.tar.gz
         Running setup.py egg_info for package django-heroku-memcacheify

   Installing collected packages: distribute, django-compressor, django-haystack, django-taggit, django-generic-aggregation, django-pylibmc-sasl, pylibmc, django-heroku-memcacheify
     Found existing installation: distribute 0.6.27
       Uninstalling distribute:
         Successfully uninstalled distribute
     Running setup.py install for distribute
       Before install bootstrap.
       Scanning installed packages
       Setuptools installation detected at /tmp/build_vk3edwx3xe4q/.heroku/venv/lib/python2.7/site-packages
       Non-egg installation
       Removing elements out of the way...
       Already patched.
       /tmp/build_vk3edwx3xe4q/.heroku/venv/lib/python2.7/site-packages/setuptools-0.6c11-py2.7.egg-info already patched.

       Installing easy_install script to /tmp/build_vk3edwx3xe4q/.heroku/venv/bin
       Installing easy_install-2.7 script to /tmp/build_vk3edwx3xe4q/.heroku/venv/bin
       After install bootstrap.
       /tmp/build_vk3edwx3xe4q/.heroku/venv/lib/python2.7/site-packages/setuptools-0.6c11-py2.7.egg-info already exists
     Found existing installation: django-compressor 1.2a2
       Uninstalling django-compressor:
         Successfully uninstalled django-compressor
     Running setup.py install for django-compressor

     Running setup.py develop for django-haystack

       Creating /tmp/build_vk3edwx3xe4q/.heroku/venv/lib/python2.7/site-packages/django-haystack.egg-link (link to .)
       django-haystack 2.0.0-beta is already the active version in easy-install.pth

       Installed /tmp/build_vk3edwx3xe4q/.heroku/src/django-haystack
     Running setup.py develop for django-taggit

       Creating /tmp/build_vk3edwx3xe4q/.heroku/venv/lib/python2.7/site-packages/django-taggit.egg-link (link to .)
       django-taggit 0.9.4 is already the active version in easy-install.pth

       Installed /tmp/build_vk3edwx3xe4q/.heroku/src/django-taggit
     Running setup.py develop for django-generic-aggregation

       Creating /tmp/build_vk3edwx3xe4q/.heroku/venv/lib/python2.7/site-packages/django-generic-aggregation.egg-link (link to .)
       django-generic-aggregation 0.3.1 is already the active version in easy-install.pth

       Installed /tmp/build_vk3edwx3xe4q/.heroku/src/django-generic-aggregation
     Running setup.py install for django-pylibmc-sasl

     Running setup.py install for pylibmc
       building '_pylibmc' extension
       gcc -pthread -fno-strict-aliasing -g -O2 -DNDEBUG -g -fwrapv -O3 -Wall -Wstrict-prototypes -fPIC -DUSE_ZLIB -I/usr/local/include/python2.7 -c _pylibmcmodule.c -o build/temp.linux-x86_64-2.7/_pylibmcmodule.o -fno-strict-aliasing
       In file included from _pylibmcmodule.c:34:
       _pylibmcmodule.h:42:36: error: libmemcached/memcached.h: No such file or directory
           _pylibmcmodule.c: In function â?~init_pylibmcâ?T:
           _pylibmcmodule.c:2140: error: â?~LIBMEMCACHED_VERSION_STRINGâ?T undeclared  (first use in this function)
           _pylibmcmodule.c:2140: warning: passing argument 3 of â?~PyModule_AddStringConstantâ?T from incompatible pointer type
       /usr/local/include/python2.7/modsupport.h:42: note: expected â?~const char *â?T but argument is of type â?~struct PylibMC_Behavior *â?T
       error: command 'gcc' failed with exit status 1
       Complete output from command /tmp/build_vk3edwx3xe4q/.heroku/venv/bin/python2.7 -c "import setuptools;__file__='/tmp/build_vk3edwx3xe4q/.heroku/venv/build/pylibmc/setup.py';exec(compile(open(__file__).read().replace('\r\n', '\n'), __file__, 'exec'))" install --single-version-externally-managed --record /tmp/pip-Y7MRuY-record/install-record.txt --install-headers /tmp/build_vk3edwx3xe4q/.heroku/venv/include/site/python2.7:
       running install

   running build

   running build_py

   creating build

   creating build/lib.linux-x86_64-2.7

   creating build/lib.linux-x86_64-2.7/pylibmc

   copying pylibmc/__main__.py -> build/lib.linux-x86_64-2.7/pylibmc

   copying pylibmc/pools.py -> build/lib.linux-x86_64-2.7/pylibmc

   copying pylibmc/__init__.py -> build/lib.linux-x86_64-2.7/pylibmc

   copying pylibmc/client.py -> build/lib.linux-x86_64-2.7/pylibmc

   copying pylibmc/consts.py -> build/lib.linux-x86_64-2.7/pylibmc

   copying pylibmc/test.py -> build/lib.linux-x86_64-2.7/pylibmc

   running build_ext

   building '_pylibmc' extension

   creating build/temp.linux-x86_64-2.7

   gcc -pthread -fno-strict-aliasing -g -O2 -DNDEBUG -g -fwrapv -O3 -Wall -Wstrict-prototypes -fPIC -DUSE_ZLIB -I/usr/local/include/python2.7 -c _pylibmcmodule.c -o build/temp.linux-x86_64-2.7/_pylibmcmodule.o -fno-strict-aliasing

   In file included from _pylibmcmodule.c:34:

   _pylibmcmodule.h:42:36: error: libmemcached/memcached.h: No such file or
directory

   In file included from _pylibmcmodule.c:34:

   _pylibmcmodule.h:75: error: expected declaration specifiers or â?~...â?T before â?~*â?T token

...Lots of errors...

   _pylibmcmodule.c: In function â?~init_pylibmcâ?T:

   _pylibmcmodule.c:2140: error: â?~LIBMEMCACHED_VERSION_STRINGâ?T undeclared (first use in this function)

   _pylibmcmodule.c:2140: warning: passing argument 3 of â?~PyModule_AddStringConstantâ?T from incompatible pointer type

   /usr/local/include/python2.7/modsupport.h:42: note: expected â?~const char *â?T but argument is of type â?~struct PylibMC_Behavior *â?T

   error: command 'gcc' failed with exit status 1

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

To git@heroku.com:crowdcademy.git
 ! [remote rejected] master -> master (pre-receive hook declined)
error: failed to push some refs to 'git@heroku.com:crowdcademy.git'

だからここに取引があります

私は自分のローカル環境でそれをテストすることができませんb/c私はWindowsのがらくたで実行しています。しかし、私が読んだことから、libmemcachedすでにherokuにインストールされています。そして、私がグーグルで何も見つけることができなかったので、他の誰もpylibmcに問題を抱えているようには見えません。この投稿では、彼らは次のことについて話している:

あなたがpylibmcをロードしていることを彼らが検出した場合、彼らはあなたのためにlibmemcachedをブートストラップします

それが提供されていないか、パスが間違っているかのいずれかで、それが問題である可能性があります。どんな助けでも大歓迎です!これがうまくいかない場合は、Redisを使用する必要がありますが、これは非常に難しいようです...そのために十分に進んでいるかどうかはわかりません。

編集 は無関係かもしれませんが、settings.pyファイルの代わりにinitを含むsettingsフォルダーを使用しています。これが可能であることをherokuが常に覚えているとは限らないため、これは奇妙な動作につながる可能性があると聞いています。

編集2

何百人もの人々が問題なくherokuでmemcachedとdjangoを実行しているので、heroku-usersが何らかのハックでlibmemcachedをインストールすることになっているとは思いません。ドキュメントでは、herokuが要件ファイルでpylibmcを検出したときに、ブートストラップされているかのように説明しています。これは結論につながります:A)設定または使用しているアプリの1つに問題があるか、B) herokuが最近何かを変更し、djangoのlibmemcachedの自動ブートストラップを壊しました。heroku config:add CLEAN_VIRTUALENV = trueを使用して新規インストールを取得しようとしましたが、現在も機能していません。私はそれがAであり、誰かが同じ問題を抱えていることを望んでいます。Bならどうやって解決したらいいのかわからない。

4

4 に答える 4

31

Herokuのフレンドリーな人たちと話をしましたが、requirements.txtの設定がすべての大混乱を引き起こしていたようです。別の要件ファイルからインポートする要件ファイルをルートで使用しないでください。少なくとも、ルート要件ファイルにpylibmcの明示的な行がない場合、libmemcachedがブートストラップされないため、機能していないpylibmcの場合。これが、私がこの問題に費やした10時間を無駄にしないようにするのに役立つことを願っています。わーい!

于 2012-07-20T21:25:10.590 に答える
10

インストールする必要がありlibmemcachedます。

開発ヘッダーなどは必要ありません。通常のヘッダーで十分です。

libmemcached をインストールできない場合は、pylibmc をインストールできません。申し訳ありませんが、それについてできることはあまりありません。

これを回避する方法はありますが、それはくだらないアイデアなので、詳細が必要な場合は私にメッセージを送ってください。

于 2012-07-17T07:43:05.097 に答える
4

libmemcached-dev、memcached-dev などを試しましたか? libmemcached のソースが必要です!

于 2012-07-16T20:35:00.060 に答える
2

これを試して:

sudo apt-get install libmemcached-dev
于 2014-03-06T01:44:26.707 に答える