有一个virtualenv设置来使用Python 3.3.2并运行它:
pip install pylibmc==1.2.3
我收到很多构建错误,安装最终失败。在我所知的情况下,确保安装了所有必要的软件包。这是我失败时所看到的:
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
编辑:
Python 3有问题吗? pylibmc不支持吗?
答案 0 :(得分:5)
正如您可能已经发现的那样,有一个支持Python 3支持的py3k分支,但尚未发布。这就是我在Python 3.4.0上从py3k分支安装pylibmc的方法:
sudo apt-get install python3-dev
sudo apt-get install libmemcached-dev
pip install git+https://github.com/lericson/pylibmc.git@py3k
希望这有帮助。
答案 1 :(得分:0)
系统上缺少libmemcached吗?
apt-get install libmemcached-dev