سؤال

Have a virtualenv setup to use Python 3.3.2 and running this:

pip install pylibmc==1.2.3

I get numerous build errors and the install eventually fails. Made sure, insofar as I can tell, that all the necessary packages were installed. Here is what I'm seeing when it fails:

    Installing collected packages: pylibmc
  Running setup.py install for pylibmc
    building '_pylibmc' extension
    i686-linux-gnu-gcc -pthread -DNDEBUG -g -fwrapv -O2 -Wall -Wstrict-prototypes -g -fstack-protector --param=ssp-buffer-size=4 -Wformat -Werror=format-security -D_FORTIFY_SOURCE=2 -fPIC -DUSE_ZLIB -I/usr/include/python3.3m -I/opt/.virtualenvs/ohmeow_web-py3/include/python3.3m -c _pylibmcmodule.c -o build/temp.linux-i686-3.3/_pylibmcmodule.o -fno-strict-aliasing
    In file included from _pylibmcmodule.c:34:0:
    _pylibmcmodule.h:350:5: warning: missing braces around initializer [-Wmissing-braces]
         PyObject_HEAD_INIT(NULL)
         ^
    _pylibmcmodule.h:350:5: warning: (near initialization for ‘PylibMC_ClientType.ob_base.ob_base’) [-Wmissing-braces]
    _pylibmcmodule.h:352:5: warning: initialization makes integer from pointer without a cast [enabled by default]
         "client",
         ^
    _pylibmcmodule.h:352:5: warning: (near initialization for ‘PylibMC_ClientType.tp_basicsize’) [enabled by default]
    _pylibmcmodule.h:355:5: warning: initialization from incompatible pointer type [enabled by default]
         (destructor)PylibMC_ClientType_dealloc,
         ^
    _pylibmcmodule.h:355:5: warning: (near initialization for ‘PylibMC_ClientType.tp_print’) [enabled by default]
    _pylibmcmodule.h:373:5: warning: initialization makes pointer from integer without a cast [enabled by default]
         Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE,
         ^
    _pylibmcmodule.h:373:5: warning: (near initialization for ‘PylibMC_ClientType.tp_doc’) [enabled by default]
    _pylibmcmodule.h:374:5: warning: initialization from incompatible pointer type [enabled by default]
         "memcached client type",
         ^
    _pylibmcmodule.h:374:5: warning: (near initialization for ‘PylibMC_ClientType.tp_traverse’) [enabled by default]
    _pylibmcmodule.h:381:5: warning: initialization from incompatible pointer type [enabled by default]
         PylibMC_ClientType_methods,
         ^
    _pylibmcmodule.h:381:5: warning: (near initialization for ‘PylibMC_ClientType.tp_members’) [enabled by default]
    _pylibmcmodule.h:389:5: warning: initialization from incompatible pointer type [enabled by default]
         (initproc)PylibMC_Client_init,
         ^
    _pylibmcmodule.h:389:5: warning: (near initialization for ‘PylibMC_ClientType.tp_alloc’) [enabled by default]
    _pylibmcmodule.h:391:5: warning: initialization from incompatible pointer type [enabled by default]
         (newfunc)PylibMC_ClientType_new, //PyType_GenericNew,
         ^
    _pylibmcmodule.h:391:5: warning: (near initialization for ‘PylibMC_ClientType.tp_free’) [enabled by default]
    _pylibmcmodule.c: In function ‘PylibMC_ClientType_dealloc’:
    _pylibmcmodule.c:77:9: error: ‘PylibMC_Client’ has no member named ‘ob_type’
         self->ob_type->tp_free(self);
             ^
    _pylibmcmodule.c: In function ‘PylibMC_Client_init’:
    _pylibmcmodule.c:143:9: warning: implicit declaration of function ‘PyString_Check’ [-Wimplicit-function-declaration]
             if (PyString_Check(c_srv)) {
             ^
    _pylibmcmodule.c:146:13: warning: implicit declaration of function ‘PyString_AS_STRING’ [-Wimplicit-function-declaration]
                 list = memcached_servers_parse(PyString_AS_STRING(c_srv));
                 ^
    _pylibmcmodule.c:146:13: warning: passing argument 1 of ‘memcached_servers_parse’ makes pointer from integer without a cast [enabled by default]
    In file included from /usr/include/libmemcached-1.0/memcached.h:110:0,
                     from /usr/include/libmemcached/memcached.h:39,
                     from _pylibmcmodule.h:42,
                     from _pylibmcmodule.c:34:
    /usr/include/libmemcached-1.0/parse.h:19:26: note: expected ‘const char *’ but argument is of type ‘int’
     memcached_server_list_st memcached_servers_parse(const char *server_strings);
                              ^

...

    _pylibmcmodule.c:2114:12: warning: assignment makes pointer from integer without a cast [enabled by default]
         module = Py_InitModule3("_pylibmc", PylibMC_functions,
                ^
    _pylibmcmodule.c:2130:9: warning: ‘return’ with no value, in function returning non-void [-Wreturn-type]
             return;
             ^
    error: command 'i686-linux-gnu-gcc' failed with exit status 1
    Complete output from command /opt/.virtualenvs/ohmeow_web-py3/bin/python3 -c "import setuptools, tokenize;__file__='/opt/.virtualenvs/ohmeow_web-py3/build/pylibmc/setup.py';exec(compile(getattr(tokenize, 'open', open)(__file__).read().replace('\r\n', '\n'), __file__, 'exec'))" install --record /tmp/pip-o805so-record/install-record.txt --single-version-externally-managed --compile --install-headers /opt/.virtualenvs/ohmeow_web-py3/include/site/python3.3:
    running install

running build

running build_py

creating build

creating build/lib.linux-i686-3.3

creating build/lib.linux-i686-3.3/pylibmc

copying pylibmc/__init__.py -> build/lib.linux-i686-3.3/pylibmc

copying pylibmc/__main__.py -> build/lib.linux-i686-3.3/pylibmc

copying pylibmc/client.py -> build/lib.linux-i686-3.3/pylibmc

copying pylibmc/consts.py -> build/lib.linux-i686-3.3/pylibmc

copying pylibmc/pools.py -> build/lib.linux-i686-3.3/pylibmc

copying pylibmc/test.py -> build/lib.linux-i686-3.3/pylibmc

running build_ext

building '_pylibmc' extension

creating build/temp.linux-i686-3.3

i686-linux-gnu-gcc -pthread -DNDEBUG -g -fwrapv -O2 -Wall -Wstrict-prototypes -g -fstack-protector --param=ssp-buffer-size=4 -Wformat -Werror=format-security -D_FORTIFY_SOURCE=2 -fPIC -DUSE_ZLIB -I/usr/include/python3.3m -I/opt/.virtualenvs/ohmeow_web-py3/include/python3.3m -c _pylibmcmodule.c -o build/temp.linux-i686-3.3/_pylibmcmodule.o -fno-strict-aliasing

In file included from _pylibmcmodule.c:34:0:

_pylibmcmodule.h:350:5: warning: missing braces around initializer [-Wmissing-braces]

     PyObject_HEAD_INIT(NULL)

     ^

_pylibmcmodule.h:350:5: warning: (near initialization for ‘PylibMC_ClientType.ob_base.ob_base’) [-Wmissing-braces]

_pylibmcmodule.h:352:5: warning: initialization makes integer from pointer without a cast [enabled by default]

     "client",

     ^

_pylibmcmodule.h:352:5: warning: (near initialization for ‘PylibMC_ClientType.tp_basicsize’) [enabled by default]

_pylibmcmodule.h:355:5: warning: initialization from incompatible pointer type [enabled by default]

     (destructor)PylibMC_ClientType_dealloc,

     ^

_pylibmcmodule.h:355:5: warning: (near initialization for ‘PylibMC_ClientType.tp_print’) [enabled by default]

_pylibmcmodule.h:373:5: warning: initialization makes pointer from integer without a cast [enabled by default]

     Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE,

     ^

_pylibmcmodule.h:373:5: warning: (near initialization for ‘PylibMC_ClientType.tp_doc’) [enabled by default]

_pylibmcmodule.h:374:5: warning: initialization from incompatible pointer type [enabled by default]

     "memcached client type",

     ^

_pylibmcmodule.h:374:5: warning: (near initialization for ‘PylibMC_ClientType.tp_traverse’) [enabled by default]

_pylibmcmodule.h:381:5: warning: initialization from incompatible pointer type [enabled by default]

     PylibMC_ClientType_methods,

     ^

_pylibmcmodule.h:381:5: warning: (near initialization for ‘PylibMC_ClientType.tp_members’) [enabled by default]

_pylibmcmodule.h:389:5: warning: initialization from incompatible pointer type [enabled by default]

     (initproc)PylibMC_Client_init,

     ^

_pylibmcmodule.h:389:5: warning: (near initialization for ‘PylibMC_ClientType.tp_alloc’) [enabled by default]

_pylibmcmodule.h:391:5: warning: initialization from incompatible pointer type [enabled by default]

     (newfunc)PylibMC_ClientType_new, //PyType_GenericNew,

     ^

_pylibmcmodule.h:391:5: warning: (near initialization for ‘PylibMC_ClientType.tp_free’) [enabled by default]

_pylibmcmodule.c: In function ‘PylibMC_ClientType_dealloc’:

_pylibmcmodule.c:77:9: error: ‘PylibMC_Client’ has no member named ‘ob_type’

     self->ob_type->tp_free(self);

         ^

_pylibmcmodule.c: In function ‘PylibMC_Client_init’:

_pylibmcmodule.c:143:9: warning: implicit declaration of function ‘PyString_Check’ [-Wimplicit-function-declaration]

         if (PyString_Check(c_srv)) {

         ^

_pylibmcmodule.c:146:13: warning: implicit declaration of function ‘PyString_AS_STRING’ [-Wimplicit-function-declaration]

             list = memcached_servers_parse(PyString_AS_STRING(c_srv));

             ^

_pylibmcmodule.c:146:13: warning: passing argument 1 of ‘memcached_servers_parse’ makes pointer from integer without a cast [enabled by default]

In file included from /usr/include/libmemcached-1.0/memcached.h:110:0,

                 from /usr/include/libmemcached/memcached.h:39,

                 from _pylibmcmodule.h:42,

                 from _pylibmcmodule.c:34:

/usr/include/libmemcached-1.0/parse.h:19:26: note: expected ‘const char *’ but argument is of type ‘int’

 memcached_server_list_st memcached_servers_parse(const char *server_strings);

                          ^

_pylibmcmodule.c: In function ‘_PylibMC_Inflate’:

_pylibmcmodule.c:297:5: warning: implicit declaration of function ‘PyString_FromStringAndSize’ [-Wimplicit-function-declaration]

     out_obj = PyString_FromStringAndSize(NULL, rvalsz);

     ^

_pylibmcmodule.c:297:13: warning: assignment makes pointer from integer without a cast [enabled by default]

     out_obj = PyString_FromStringAndSize(NULL, rvalsz);

             ^

_pylibmcmodule.c:301:9: warning: assignment makes pointer from integer without a cast [enabled by default]

     out = PyString_AS_STRING(out_obj);

         ^

_pylibmcmodule.c:340:13: warning: implicit declaration of function ‘_PyString_Resize’ [-Wimplicit-function-declaration]

             if (_PyString_Resize(&out_obj, (Py_ssize_t)(rvalsz << 1)) < 0) {

             ^

_pylibmcmodule.c:345:17: warning: assignment makes pointer from integer without a cast [enabled by default]

             out = PyString_AS_STRING(out_obj);

                 ^

_pylibmcmodule.c: In function ‘_PylibMC_parse_memcached_value’:

_pylibmcmodule.c:384:15: warning: assignment makes pointer from integer without a cast [enabled by default]

         value = PyString_AS_STRING(inflated);

               ^

_pylibmcmodule.c:385:9: warning: implicit declaration of function ‘PyString_GET_SIZE’ [-Wimplicit-function-declaration]

         size = PyString_GET_SIZE(inflated);

         ^

_pylibmcmodule.c:405:17: warning: assignment makes pointer from integer without a cast [enabled by default]

             tmp = PyString_FromStringAndSize(value, size);

                 ^

_pylibmcmodule.c:409:13: warning: implicit declaration of function ‘PyInt_FromString’ [-Wimplicit-function-declaration]

             retval = PyInt_FromString(PyString_AS_STRING(tmp), NULL, 10);

             ^

_pylibmcmodule.c:409:20: warning: assignment makes pointer from integer without a cast [enabled by default]

             retval = PyInt_FromString(PyString_AS_STRING(tmp), NULL, 10);

                    ^

_pylibmcmodule.c:413:15: warning: implicit declaration of function ‘PyInt_AS_LONG’ [-Wimplicit-function-declaration]

               retval = PyBool_FromLong(PyInt_AS_LONG(tmp));

               ^

_pylibmcmodule.c:417:20: warning: assignment makes pointer from integer without a cast [enabled by default]

             retval = PyString_FromStringAndSize(value, (Py_ssize_t)size);

                    ^

_pylibmcmodule.c: In function ‘PylibMC_Client_get’:

_pylibmcmodule.c:457:13: warning: passing argument 2 of ‘memcached_get’ makes pointer from integer without a cast [enabled by default]

             &val_size, &flags, &error);

             ^

In file included from /usr/include/libmemcached-1.0/memcached.h:107:0,

                 from /usr/include/libmemcached/memcached.h:39,

                 from _pylibmcmodule.h:42,

                 from _pylibmcmodule.c:34:

/usr/include/libmemcached-1.0/get.h:47:7: note: expected ‘const char *’ but argument is of type ‘int’

 char *memcached_get(memcached_st *ptr,

       ^

_pylibmcmodule.c:466:9: warning: return makes pointer from integer without a cast [enabled by default]

         return PyString_FromStringAndSize("", 0);

         ^

_pylibmcmodule.c:475:44: warning: passing argument 4 of ‘PylibMC_ErrFromMemcachedWithKey’ makes pointer from integer without a cast [enabled by default]

                                            PyString_GET_SIZE(arg));

                                            ^

In file included from _pylibmcmodule.c:34:0:

_pylibmcmodule.h:269:18: note: expected ‘const char *’ but argument is of type ‘int’

 static PyObject *PylibMC_ErrFromMemcachedWithKey(PylibMC_Client *, const char *,

                  ^

_pylibmcmodule.c: In function ‘PylibMC_Client_gets’:

_pylibmcmodule.c:498:11: warning: assignment makes pointer from integer without a cast [enabled by default]

     *keys = PyString_AS_STRING(arg);

           ^

_pylibmcmodule.c: In function ‘_PylibMC_SerializeValue’:

_pylibmcmodule.c:768:8: warning: implicit declaration of function ‘PyString_AsStringAndSize’ [-Wimplicit-function-declaration]

        || PyString_AsStringAndSize(key_obj, &serialized->key,

        ^

_pylibmcmodule.c:786:9: warning: implicit declaration of function ‘PyString_Size’ [-Wimplicit-function-declaration]

         if (!PyString_Size(key_prefix)) {

         ^

_pylibmcmodule.c:795:9: warning: implicit declaration of function ‘PyString_FromFormat’ [-Wimplicit-function-declaration]

         prefixed_key_obj = PyString_FromFormat("%s%s",

         ^

_pylibmcmodule.c:795:26: warning: assignment makes pointer from integer without a cast [enabled by default]

         prefixed_key_obj = PyString_FromFormat("%s%s",

                          ^

_pylibmcmodule.c:827:9: warning: implicit declaration of function ‘PyNumber_Int’ [-Wimplicit-function-declaration]

         PyObject* tmp = PyNumber_Int(value_obj);

         ^

_pylibmcmodule.c:827:25: warning: initialization makes pointer from integer without a cast [enabled by default]

         PyObject* tmp = PyNumber_Int(value_obj);

                         ^

_pylibmcmodule.c:830:5: warning: implicit declaration of function ‘PyInt_Check’ [-Wimplicit-function-declaration]

     } else if (PyInt_Check(value_obj)) {

     ^

_pylibmcmodule.c:832:25: warning: initialization makes pointer from integer without a cast [enabled by default]

         PyObject* tmp = PyNumber_Int(value_obj);

                         ^

_pylibmcmodule.c: In function ‘_PylibMC_IncrMulti’:

_pylibmcmodule.c:1117:32: warning: initialization makes pointer from integer without a cast [enabled by default]

             PyObject* newkey = PyString_FromFormat("%s%s",

                                ^

_pylibmcmodule.c: In function ‘PylibMC_Client_get_multi’:

_pylibmcmodule.c:1350:18: warning: assignment makes pointer from integer without a cast [enabled by default]

             rkey = PyString_FromStringAndSize(prefix, prefix_len);

                  ^

_pylibmcmodule.c:1351:13: warning: implicit declaration of function ‘PyString_Concat’ [-Wimplicit-function-declaration]

             PyString_Concat(&rkey, ckey);

             ^

_pylibmcmodule.c:1355:18: warning: assignment makes pointer from integer without a cast [enabled by default]

             rkey = PyString_FromFormat("%s%s",

                  ^

_pylibmcmodule.c:1363:17: warning: assignment makes pointer from integer without a cast [enabled by default]

         keys[i] = PyString_AS_STRING(rkey);

                 ^

_pylibmcmodule.c:1404:17: warning: assignment makes pointer from integer without a cast [enabled by default]

         key_obj = PyString_FromStringAndSize(memcached_result_key_value(res) + prefix_len,

                 ^

_pylibmcmodule.c: In function ‘_PylibMC_DoMulti’:

_pylibmcmodule.c:1490:29: warning: initialization makes pointer from integer without a cast [enabled by default]

             char *key_str = PyString_AS_STRING(item);

                             ^

_pylibmcmodule.c: In function ‘PylibMC_Client_get_behaviors’:

_pylibmcmodule.c:1631:9: warning: implicit declaration of function ‘PyInt_FromLong’ [-Wimplicit-function-declaration]

         x = PyInt_FromLong((long)bval);

         ^

_pylibmcmodule.c:1631:11: warning: assignment makes pointer from integer without a cast [enabled by default]

         x = PyInt_FromLong((long)bval);

           ^

_pylibmcmodule.c: In function ‘_PylibMC_AddServerCallback’:

_pylibmcmodule.c:1713:9: warning: implicit declaration of function ‘PyString_FromString’ [-Wimplicit-function-declaration]

         curr_value = PyString_FromString(mc_val);

         ^

_pylibmcmodule.c:1713:20: warning: assignment makes pointer from integer without a cast [enabled by default]

         curr_value = PyString_FromString(mc_val);

                    ^

_pylibmcmodule.c:1726:10: warning: assignment makes pointer from integer without a cast [enabled by default]

     desc = PyString_FromFormat("%s:%d (%u)",

          ^

_pylibmcmodule.c: In function ‘PylibMC_Client_flush_all’:

_pylibmcmodule.c:1812:39: error: ‘PyInt_Type’ undeclared (first use in this function)

                                      &PyInt_Type, &time))

                                       ^

_pylibmcmodule.c:1812:39: note: each undeclared identifier is reported only once for each function it appears in

_pylibmcmodule.c: In function ‘PylibMC_Client_clone’:

_pylibmcmodule.c:1841:53: error: ‘PylibMC_Client’ has no member named ‘ob_type’

     clone = (PylibMC_Client *)PyType_GenericNew(self->ob_type, NULL, NULL);

                                                     ^

_pylibmcmodule.c: In function ‘_PylibMC_CheckKey’:

_pylibmcmodule.c:1967:13: warning: passing argument 1 of ‘_PylibMC_CheckKeyStringAndSize’ makes pointer from integer without a cast [enabled by default]

             PyString_AS_STRING(key), PyString_GET_SIZE(key));

             ^

In file included from _pylibmcmodule.c:34:0:

_pylibmcmodule.h:276:12: note: expected ‘char *’ but argument is of type ‘int’

 static int _PylibMC_CheckKeyStringAndSize(char *, Py_ssize_t);

            ^

_pylibmcmodule.c: In function ‘_make_excs’:

_pylibmcmodule.c:2061:9: warning: passing argument 3 of ‘PyObject_SetAttrString’ makes pointer from integer without a cast [enabled by default]

         PyObject_SetAttrString(err->exc, "retcode", PyInt_FromLong(err->rc));

         ^

In file included from /usr/include/python3.3m/pytime.h:6:0,

                 from /usr/include/python3.3m/Python.h:65,

                 from _pylibmcmodule.h:41,

                 from _pylibmcmodule.c:34:

/usr/include/python3.3m/object.h:505:17: note: expected ‘struct PyObject *’ but argument is of type ‘int’

 PyAPI_FUNC(int) PyObject_SetAttrString(PyObject *, const char *, PyObject *);

                 ^

_pylibmcmodule.c: In function ‘_make_behavior_consts’:

_pylibmcmodule.c:2091:9: warning: passing argument 2 of ‘PyList_Append’ makes pointer from integer without a cast [enabled by default]

         PyList_Append(behavior_names, PyString_FromString(b->name));

         ^

In file included from /usr/include/python3.3m/Python.h:85:0,

                 from _pylibmcmodule.h:41,

                 from _pylibmcmodule.c:34:

/usr/include/python3.3m/listobject.h:57:17: note: expected ‘struct PyObject *’ but argument is of type ‘int’

 PyAPI_FUNC(int) PyList_Append(PyObject *, PyObject *);

                 ^

_pylibmcmodule.c: In function ‘init_pylibmc’:

_pylibmcmodule.c:2105:9: warning: ‘return’ with no value, in function returning non-void [-Wreturn-type]

         return;

         ^

_pylibmcmodule.c:2108:9: warning: ‘return’ with no value, in function returning non-void [-Wreturn-type]

         return;

         ^

_pylibmcmodule.c:2111:9: warning: ‘return’ with no value, in function returning non-void [-Wreturn-type]

         return;

         ^

_pylibmcmodule.c:2114:5: warning: implicit declaration of function ‘Py_InitModule3’ [-Wimplicit-function-declaration]

     module = Py_InitModule3("_pylibmc", PylibMC_functions,

     ^

_pylibmcmodule.c:2114:12: warning: assignment makes pointer from integer without a cast [enabled by default]

     module = Py_InitModule3("_pylibmc", PylibMC_functions,

            ^

_pylibmcmodule.c:2130:9: warning: ‘return’ with no value, in function returning non-void [-Wreturn-type]

         return;

         ^

error: command 'i686-linux-gnu-gcc' failed with exit status 1

EDIT:

Is the problem with Python 3? Does pylibmc not support it?

هل كانت مفيدة؟

المحلول

As you might already have found out, there's a py3k branch which enables Python 3 support, but it is not released yet. This is how I managed to install pylibmc from py3k branch on Python 3.4.0:

sudo apt-get install python3-dev

sudo apt-get install libmemcached-dev

pip install git+https://github.com/lericson/pylibmc.git@py3k

Hope this helps.

نصائح أخرى

Missing libmemcached on your System?

apt-get install libmemcached-dev
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top