我正在尝试设置thrift以便与Cassandra合并,因此当我运行

setup.py


它把这个消息放在命令行中

running build
running build_py
running build_ext
building 'thrift.protocol.fastbinary' extension
C:\MinGW\bin\gcc.exe -mno-cygwin -mdll -O -Wall -IC:\Python26\include -IC:\Pytho
n26\PC -c src/protocol/fastbinary.c -o build\temp.win32-2.6\Release\src\protocol
\fastbinary.o
src/protocol/fastbinary.c:24:24: netinet/in.h: No such file or directory
src/protocol/fastbinary.c:85:4: #error "Cannot determine endianness"
src/protocol/fastbinary.c: In function `writeI16':
src/protocol/fastbinary.c:295: warning: implicit declaration of function `htons'

src/protocol/fastbinary.c: In function `writeI32':
src/protocol/fastbinary.c:300: warning: implicit declaration of function `htonl'

src/protocol/fastbinary.c: In function `readI16':
src/protocol/fastbinary.c:688: warning: implicit declaration of function `ntohs'

src/protocol/fastbinary.c: In function `readI32':
src/protocol/fastbinary.c:696: warning: implicit declaration of function `ntohl'

error: command 'gcc' failed with exit status 1


在这个问题上需要一些帮助。我已经安装了MigW32

谢谢。

最佳答案

我只成功通过MSVC安装了Thrift。


安装MSVC
节俭
应用thrift-252-python-msvc-1.diff补丁(google it)


fastbinary.c将被打补丁,但setup.py补丁将失败,请根据setup.py.rej的提示手动更新,这是一个(看似)正确的副本:

from distutils.core import setup, Extension
import sys

libraries = []

if sys.platform == 'win32':
    libraries.append('ws2_32')

fastbinarymod = Extension('thrift.protocol.fastbinary',
                          sources = ['src/protocol/fastbinary.c'],
                          libraries = libraries,
        )

setup(name = 'Thrift',
      version = '0.1',
      description = 'Thrift Python Libraries',
      author = 'Thrift Developers',
      author_email = 'thrift-dev@incubator.apache.org',
      url = 'http://incubator.apache.org/thrift/',
      license = 'Apache License 2.0',
      packages = [
        'thrift',
        'thrift.protocol',
        'thrift.transport',
        'thrift.server',
      ],
      package_dir = {'thrift' : 'src'},
      ext_modules = [fastbinarymod],
      )


字节序测试将失败,请修改fastbinary.c(在第68行附近):

#ifdef _MSC_VER
  #define __BYTE_ORDER __LITTLE_ENDIAN
#endif


运行python setup.py install之后,希望您将获得所需的东西。

关于python - 为python设置Thrift模块时出错,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/2387816/

10-09 18:16
查看更多