Memcached auf Heroku w/ Django : kann nicht installieren newcache / memcacheify
Habe ich verbrachte viel Zeit auf diese, und es ist deutlich jenseits meiner newbie-Verständnis/Fähigkeiten. Habe ich versucht zu installieren django-heroku-memcacheify mit pip installieren, das wirft Fehler. Ich verfolgte das problem bis zu newcache, die die Ursache für die Probleme. Hier ist einer der interessantesten Teile der error-log:
_pylibmcmodule.h:42:36: Fehler: libmemcached - /memcached.h: Keine solche Datei oder das
Verzeichnis
hier ist die (fast) komplette traceback:
-----> 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 '[email protected]:crowdcademy.git'
Also hier ist der deal
Kann ich nicht testen, es in meinem lokalen env b/c ich bin auf einem windows Stück Scheiße. Aber von dem, was ich gelesen habe, libmemcached ist bereits installiert auf heroku. Und niemand anderes zu haben scheint keine Probleme mit newcache, weil ich konnte nichts finden auf google. In diesem Beitrag Sie reden:
dass, wenn Sie feststellen, dass Sie be-newcache, werden Sie bootstrap
libmemcached für Sie
Dass das problem sein könnte, entweder es ist nicht vorhanden oder der Pfad falsch ist. Jede Hilfe ist willkommen! wenn das nicht klappt werde ich auf die Nutzung der Redis-das scheint zu sein, viel schwieriger... weiß nicht ob ich Fortgeschritten genug.
Bearbeiten
Mag irrelevant sein, aber ich bin mit einem Ordner "settings" init anstelle eines settings.py Datei. Ich habe gehört, dass dies kann dazu führen, ein seltsames Verhalten, da heroku nicht immer daran denken, dass das möglich ist.
Edit 2
Da gibt es Hunderte von Menschen ausgeführt memcached und django auf heroku ohne Probleme, ich glaube nicht, dass heroku-Anwender sollen zu installieren, libmemcached mit irgendeiner Art von hack. Die docs darüber reden, als wenn es bootstrapped für Sie, wenn heroku erkennt newcache in Ihren Anforderungen-Datei. Das führt mich zu dem Schluss: A) entweder es ist etwas falsch in meinen Einstellungen oder in einer der apps, die ich verwenden oder B) heroku etwas verändert vor kurzem, und brach die automatische bootstrapping der libmemcached für django. Ich habe versucht, Sie zu bekommen eine frische Installation mit heroku config:add CLEAN_VIRTUALENV=true aber das funktioniert auch nicht jetzt. Ich bin der Hoffnung, dass es Eine und jemand hat das gleiche problem gehabt. Wenn es B ich habe keine Ahnung wie es zu lösen.
- Das problem fing einfach an mich Los aus der blauen heute... und memcached arbeitet seit Monaten für mich. Ich bin froh, dass Sie fragte, weil tiwei Antwort war vor Ort auf. Ich hatte umstrukturiert meine Anforderungen in mehrere Anforderungen-Dateien und root-Anforderung importiert Sie; das scheint fatal gewesen. Ich denke, ich werde einfach setzen newcache direkt in der root-Datei und das sollte es klar, bis.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Habe ich mich an die freundlichen Leute bei Heroku und es scheint, wie meine requirements.txt setup war die Ursache für die Verwüstung. Verwenden Sie keine Anforderungen-Datei im Stammverzeichnis, dass die Einfuhren aus anderen Anforderungen-Datei! Zumindest für newcache, die nicht funktioniert, weil libmemcached nicht installiert, wenn es keine explizite Linie mit newcache in die Wurzel-Anforderungen-Datei. Ich hoffe, das wird helfen, andere zu vermeiden, verschwenden die 10 Stunden habe ich damit verbracht, über dieses problem. Yay!
#pylibmc
zurequirements.txt
für mich gearbeitet.pylibmc
wird in Ihren Anforderungen-Datei, oder Heroku nicht erkennen, dass Sie benötigen diese Bibliothek. So zum Beispiel, fügen Siepylibmc==1.2.3
zu der Datei.dokku
. Vielen Dank für die Rettung meines 10 Uhr!pip install
, und wenn 'newcache' gefunden wird, dann wird der vendored version von libmemcached ist installiert. Es gibt einen Unterschied in der regex für beide - 'hg+" können an beliebiger Stelle innerhalb der Datei, und so ist es möglich, um es in einem Kommentar, dass Sie nicht stören mit Ihrem verschachtelten Datei-Struktur. Die regex für newcache erfordert, dass es erscheint am Anfang einer Zeile - @TaylorFausak das wird nicht funktionieren, da ist.Müssen Sie
libmemcached
installiert.Brauchen Sie nicht die Entwicklungs-Header oder etwas, die Stammkunden sind mehr als genug!
Wenn Sie nicht installieren können libmemcached, können Sie nicht installieren newcache. Sorry aber es gibt nicht viel zu tun.
Gibt es eine Möglichkeit, dies zu umgehen, aber es ist eine scheiß Idee, also mir Nachricht, wenn Sie möchten, die details.
Haben Sie versucht, so etwas wie libmemcached-dev, memcached-dev ? Sie brauchen QUELLEN der libmemcached !
Versuchen Sie dies: