2011-10-02 134 views
2

雖然試圖跟隨在http://code.google.com/p/python-libmemcached/蟒蛇-libmemcached說明我在第3步中遇到麻煩(「蟒蛇的setup.py安裝」)GCC失敗,退出狀態1在安裝libmemcached

(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 

我旁邊不知道這意味着什麼或做什麼。我在我的編譯器(4.0和4.2)上有多個版本的gcc,並且從搜索引擎中收集到的信息足以說明這可能很重要。否則完全失去。

在此先感謝。

[編輯:以下@ phihag的指示後]

我現在接受一個完全不同的,雖然仍然令人困惑的錯誤:

(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)... 

回答

4

錯誤發生,因爲該文件cmemcached_imp.c是不存在的,但必須在這一步編譯。

首先,編輯文件cmemcached_imp.pyx和線506固定錯字而不是

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

,應該說

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

然後,安裝cython和執行

$ cython cmemcached_imp.pyx 

cython應該默默生成文件cmemcached_imp.c

雖然這將解決眼前的錯誤,你可能還需要與

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

更換

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

setup.py爲響應編輯:

如果按照指示逐字地,您還需要在本地目錄中擁有libmemcached。執行

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

在python-libmemcached中實現該功能。

+0

非常感謝您的回覆和幫助。我跟着做了你所建議的改變,但現在我收到了一個完全不同的錯誤,這對我來說很少/沒有意義。我粘貼了上面似乎最相關的幾行。 –

+1

@Matt好吧,你收到了一個不同的錯誤,因爲第一個錯誤已經修復,但是源代碼和指令還有其他問題。更新一行。 – phihag

+0

啊,還有一個新的錯誤! ...我決定在這裏改變策略。感謝@phihag的幫助 –

相關問題