2

While trying to follow the python-libmemcached instructions at http://code.google.com/p/python-libmemcached/ I run into trouble at step 3 ("python setup.py install")

    (gigmash_venv)m:python-libmemcached matthewparrilla$ python setup.py build
    running build
    running build_py
    creating build
    creating build/lib.macosx-10.3-fat-2.7
    copying cmemcached.py -> build/lib.macosx-10.3-fat-2.7
    running build_ext
    building 'cmemcached_imp' extension
    creating build/temp.macosx-10.3-fat-2.7
    gcc-4.0 -fno-strict-aliasing -fno-common -dynamic -isysroot /Developer/SDKs/MacOSX10.4u.sdk -arch ppc -arch i386 -g -O2 -DNDEBUG -g -O3 -I/Library/Frameworks/Python.framework/Versions/2.7/include/python2.7 -c cmemcached_imp.c -o build/temp.macosx-10.3-fat-2.7/cmemcached_imp.o
    powerpc-apple-darwin9-gcc-4.0.1: cmemcached_imp.c: No such file or directory
    powerpc-apple-darwin9-gcc-4.0.1: no input files
    i686-apple-darwin9-gcc-4.0.1: cmemcached_imp.c: No such file or directory
    i686-apple-darwin9-gcc-4.0.1: no input files
    lipo: can't figure out the architecture type of: /var/folders/0o/0oHT3RmJF80rpIJtdbegzE+++TI/-Tmp-//cc9xQqQ6.out
    error: command 'gcc-4.0' failed with exit status 1

I have next to no idea what this means or what to do. I do have multiple versions of gcc on my comp (4.0 and 4.2) and have gleaned enough from googling it that that might matter. Totally lost otherwise.

Thanks in advance.

[Edit: After following @phihag's instructions]

I'm now receiving an altogether different though still confusing error:

    (gigmash_venv)m:python-libmemcached matthewparrilla$ python setup.py build
    running build
    running build_py
    running build_ext
    building 'cmemcached_imp' extension
    gcc-4.0 -fno-strict-aliasing -fno-common -dynamic -isysroot /Developer/SDKs/MacOSX10.4u.sdk -arch ppc -arch i386 -g -O2 -DNDEBUG -g -O3 -I/Library/Frameworks/Python.framework/Versions/2.7/include/python2.7 -c cmemcached_imp.c -o build/temp.macosx-10.3-fat-2.7/cmemcached_imp.o
    cmemcached_imp.c:237:36:cmemcached_imp.c:237:36: error:  error: libmemcached/memcached.h: No such file or directory
    libmemcached/memcached.h: No such file or directory
    In file included from cmemcached_imp.c:238:
    split_mc.h:14: warning: ‘struct memcached_st’ declared inside parameter list
    split_mc.h:14: warning: its scope is only this definition or declaration, which is probably not what you want
    split_mc.h:17: warning: ‘struct memcached_st’ declared inside parameter list
    In file included from cmemcached_imp.c:238:
    split_mc.h:14: warning: ‘struct memcached_st’ declared inside parameter list
    (and this goes on for many many more lines)...
Matt Parrilla
  • 3,171
  • 6
  • 35
  • 54

1 Answers1

4

The error occurs because the file cmemcached_imp.c is not there, but must be compiled in this step.

First, edit the file cmemcached_imp.pyx and fix the typo in line 506. Instead of

sys.stderr.write("[cmemcached]%s only support string: %s" % (cmd, key))

, it should say

sys.stderr.write("[cmemcached]%s only support string: %s" % (cmd, keys))

Then, install cython and execute

$ cython cmemcached_imp.pyx

cython should silently generate the file cmemcached_imp.c.

While this will fix the immediate error, you may also need to replace

ext_modules=[Extension('cmemcached_imp',
            ['cmemcached_imp.pyx', 'split_mc.c'],

in setup.py with

ext_modules=[Extension('cmemcached_imp',
            ['cmemcached_imp.c', 'split_mc.c'],

In response to the edit:

If you follow the instructions verbatim, you'll additionally need to have libmemcached in your local directory. Execute

$ ln -s $(pwd)/../libmemcached-0.40/libmemcached

in python-libmemcached to achieve that.

phihag
  • 278,196
  • 72
  • 453
  • 469
  • Thank you very much for the reply and the help. I followed made the changes you suggested but am now receiving a wholly different error that makes little/no sense to me. I pasted what seemed to be the most relevant lines above. – Matt Parrilla Oct 03 '11 at 13:29
  • 1
    @Matt Well, you're receiving a different error because the first error has been fixed, but there are additional problems with the source code and instructions. Updated with one more line. – phihag Oct 03 '11 at 14:34
  • Ah, and a new error!! ... I've decided to change strategies here. Thanks for the help @phihag – Matt Parrilla Oct 03 '11 at 20:52
  • cmemcached_imp.pyx where is this file loacted? @MattParrilla – abhishek Feb 19 '19 at 13:21
  • @abhishek I'm afraid I don't remember at all. – Matt Parrilla Feb 21 '19 at 19:14