先说解决方式:
sudo pip install cython
报错内容:
pip install thrift-sasl==0.2.1
Looking in indexes: https://pypi.tuna.tsinghua.edu.cn/simple
Collecting thrift-sasl==0.2.1
Collecting thriftpy (from thrift-sasl==0.2.1)
Downloading https://pypi.tuna.tsinghua.edu.cn/packages/f4/19/cca118cf7d2087310dbc8bd70dc7df0c1320f2652873a93d06d7ba356d4a/thriftpy-0.3.9.tar.gz (208kB)
100% |████████████████████████████████| 215kB 650kB/s
Requirement already satisfied: sasl>=0.2.1 in /Users/yuanwei/.virtualenvs/gaoji/lib/python3.7/site-packages (from thrift-sasl==0.2.1) (0.2.1)
Requirement already satisfied: ply<4.0,>=3.4 in /Users/yuanwei/.virtualenvs/gaoji/lib/python3.7/site-packages (from thriftpy->thrift-sasl==0.2.1) (3.11)
Requirement already satisfied: six in /Users/yuanwei/.virtualenvs/gaoji/lib/python3.7/site-packages (from sasl>=0.2.1->thrift-sasl==0.2.1) (1.11.0)
Building wheels for collected packages: thriftpy
Building wheel for thriftpy (setup.py) ... error
Complete output from command /Users/yuanwei/.virtualenvs/gaoji/bin/python3.7 -u -c "import setuptools, tokenize;__file__='/private/var/folders/d5/my74cddj7rqdj6t8rt93sy140000gn/T/pip-install-7xe0w0p3/thriftpy/setup.py';f=getattr(tokenize, 'open', open)(__file__);code=f.read().replace('\r\n', '\n');f.close();exec(compile(code, __file__, 'exec'))" bdist_wheel -d /private/var/folders/d5/my74cddj7rqdj6t8rt93sy140000gn/T/pip-wheel-4jl5h648 --python-tag cp37:
running bdist_wheel
The [wheel] section is deprecated. Use [bdist_wheel] instead.
running build
running build_py
creating build
creating build/lib.macosx-10.9-x86_64-3.7
creating build/lib.macosx-10.9-x86_64-3.7/thriftpy
copying thriftpy/server.py -> build/lib.macosx-10.9-x86_64-3.7/thriftpy
copying thriftpy/hook.py -> build/lib.macosx-10.9-x86_64-3.7/thriftpy
copying thriftpy/__init__.py -> build/lib.macosx-10.9-x86_64-3.7/thriftpy
copying thriftpy/thrift.py -> build/lib.macosx-10.9-x86_64-3.7/thriftpy
copying thriftpy/rpc.py -> build/lib.macosx-10.9-x86_64-3.7/thriftpy
copying thriftpy/utils.py -> build/lib.macosx-10.9-x86_64-3.7/thriftpy
copying thriftpy/tornado.py -> build/lib.macosx-10.9-x86_64-3.7/thriftpy
copying thriftpy/_compat.py -> build/lib.macosx-10.9-x86_64-3.7/thriftpy
creating build/lib.macosx-10.9-x86_64-3.7/thriftpy/transport
copying thriftpy/transport/_ssl.py -> build/lib.macosx-10.9-x86_64-3.7/thriftpy/transport
copying thriftpy/transport/__init__.py -> build/lib.macosx-10.9-x86_64-3.7/thriftpy/transport
copying thriftpy/transport/sslsocket.py -> build/lib.macosx-10.9-x86_64-3.7/thriftpy/transport
copying thriftpy/transport/socket.py -> build/lib.macosx-10.9-x86_64-3.7/thriftpy/transport
creating build/lib.macosx-10.9-x86_64-3.7/thriftpy/protocol
copying thriftpy/protocol/binary.py -> build/lib.macosx-10.9-x86_64-3.7/thriftpy/protocol
copying thriftpy/protocol/compact.py -> build/lib.macosx-10.9-x86_64-3.7/thriftpy/protocol
copying thriftpy/protocol/__init__.py -> build/lib.macosx-10.9-x86_64-3.7/thriftpy/protocol
copying thriftpy/protocol/exc.py -> build/lib.macosx-10.9-x86_64-3.7/thriftpy/protocol
copying thriftpy/protocol/multiplex.py -> build/lib.macosx-10.9-x86_64-3.7/thriftpy/protocol
copying thriftpy/protocol/json.py -> build/lib.macosx-10.9-x86_64-3.7/thriftpy/protocol
creating build/lib.macosx-10.9-x86_64-3.7/thriftpy/parser
copying thriftpy/parser/__init__.py -> build/lib.macosx-10.9-x86_64-3.7/thriftpy/parser
copying thriftpy/parser/parser.py -> build/lib.macosx-10.9-x86_64-3.7/thriftpy/parser
copying thriftpy/parser/exc.py -> build/lib.macosx-10.9-x86_64-3.7/thriftpy/parser
copying thriftpy/parser/lexer.py -> build/lib.macosx-10.9-x86_64-3.7/thriftpy/parser
creating build/lib.macosx-10.9-x86_64-3.7/thriftpy/contrib
copying thriftpy/contrib/__init__.py -> build/lib.macosx-10.9-x86_64-3.7/thriftpy/contrib
creating build/lib.macosx-10.9-x86_64-3.7/thriftpy/transport/memory
copying thriftpy/transport/memory/__init__.py -> build/lib.macosx-10.9-x86_64-3.7/thriftpy/transport/memory
creating build/lib.macosx-10.9-x86_64-3.7/thriftpy/transport/buffered
copying thriftpy/transport/buffered/__init__.py -> build/lib.macosx-10.9-x86_64-3.7/thriftpy/transport/buffered
creating build/lib.macosx-10.9-x86_64-3.7/thriftpy/transport/framed
copying thriftpy/transport/framed/__init__.py -> build/lib.macosx-10.9-x86_64-3.7/thriftpy/transport/framed
creating build/lib.macosx-10.9-x86_64-3.7/thriftpy/contrib/tracking
copying thriftpy/contrib/tracking/__init__.py -> build/lib.macosx-10.9-x86_64-3.7/thriftpy/contrib/tracking
copying thriftpy/contrib/tracking/tracker.py -> build/lib.macosx-10.9-x86_64-3.7/thriftpy/contrib/tracking
copying thriftpy/contrib/tracking/tracking.thrift -> build/lib.macosx-10.9-x86_64-3.7/thriftpy/contrib/tracking
running build_ext
building 'thriftpy.transport.cybase' extension
creating build/temp.macosx-10.9-x86_64-3.7
creating build/temp.macosx-10.9-x86_64-3.7/thriftpy
creating build/temp.macosx-10.9-x86_64-3.7/thriftpy/transport
gcc -Wno-unused-result -Wsign-compare -Wunreachable-code -fno-common -dynamic -DNDEBUG -g -fwrapv -O3 -Wall -arch x86_64 -g -I/Library/Frameworks/Python.framework/Versions/3.7/include/python3.7m -c thriftpy/transport/cybase.c -o build/temp.macosx-10.9-x86_64-3.7/thriftpy/transport/cybase.o
thriftpy/transport/cybase.c:3127:24: error: no member named 'exc_type' in 'struct _ts'
tmp_type = tstate->exc_type;
~~~~~~ ^
thriftpy/transport/cybase.c:3128:25: error: no member named 'exc_value' in 'struct _ts'; did you mean 'curexc_value'?
tmp_value = tstate->exc_value;
^~~~~~~~~
curexc_value
/Library/Frameworks/Python.framework/Versions/3.7/include/python3.7m/pystate.h:240:15: note: 'curexc_value' declared here
PyObject *curexc_value;
^
thriftpy/transport/cybase.c:3129:22: error: no member named 'exc_traceback' in 'struct _ts'; did you mean 'curexc_traceback'?
tmp_tb = tstate->exc_traceback;
^~~~~~~~~~~~~
curexc_traceback
/Library/Frameworks/Python.framework/Versions/3.7/include/python3.7m/pystate.h:241:15: note: 'curexc_traceback' declared here
PyObject *curexc_traceback;
^
thriftpy/transport/cybase.c:3130:13: error: no member named 'exc_type' in 'struct _ts'
tstate->exc_type = local_type;
~~~~~~ ^
thriftpy/transport/cybase.c:3131:13: error: no member named 'exc_value' in 'struct _ts'; did you mean 'curexc_value'?
tstate->exc_value = local_value;
^~~~~~~~~
curexc_value
/Library/Frameworks/Python.framework/Versions/3.7/include/python3.7m/pystate.h:240:15: note: 'curexc_value' declared here
PyObject *curexc_value;
^
thriftpy/transport/cybase.c:3132:13: error: no member named 'exc_traceback' in 'struct _ts'; did you mean 'curexc_traceback'?
tstate->exc_traceback = local_tb;
^~~~~~~~~~~~~
curexc_traceback
/Library/Frameworks/Python.framework/Versions/3.7/include/python3.7m/pystate.h:241:15: note: 'curexc_traceback' declared here
PyObject *curexc_traceback;
^
thriftpy/transport/cybase.c:3154:24: error: no member named 'exc_type' in 'struct _ts'
tmp_type = tstate->exc_type;
~~~~~~ ^
thriftpy/transport/cybase.c:3155:25: error: no member named 'exc_value' in 'struct _ts'; did you mean 'curexc_value'?
tmp_value = tstate->exc_value;
^~~~~~~~~
curexc_value
/Library/Frameworks/Python.framework/Versions/3.7/include/python3.7m/pystate.h:240:15: note: 'curexc_value' declared here
PyObject *curexc_value;
^
thriftpy/transport/cybase.c:3156:22: error: no member named 'exc_traceback' in 'struct _ts'; did you mean 'curexc_traceback'?
tmp_tb = tstate->exc_traceback;
^~~~~~~~~~~~~
curexc_traceback
/Library/Frameworks/Python.framework/Versions/3.7/include/python3.7m/pystate.h:241:15: note: 'curexc_traceback' declared here
PyObject *curexc_traceback;
^
thriftpy/transport/cybase.c:3157:13: error: no member named 'exc_type' in 'struct _ts'
tstate->exc_type = *type;
~~~~~~ ^
thriftpy/transport/cybase.c:3158:13: error: no member named 'exc_value' in 'struct _ts'; did you mean 'curexc_value'?
tstate->exc_value = *value;
^~~~~~~~~
curexc_value
/Library/Frameworks/Python.framework/Versions/3.7/include/python3.7m/pystate.h:240:15: note: 'curexc_value' declared here
PyObject *curexc_value;
^
thriftpy/transport/cybase.c:3159:13: error: no member named 'exc_traceback' in 'struct _ts'; did you mean 'curexc_traceback'?
tstate->exc_traceback = *tb;
^~~~~~~~~~~~~
curexc_traceback
/Library/Frameworks/Python.framework/Versions/3.7/include/python3.7m/pystate.h:241:15: note: 'curexc_traceback' declared here
PyObject *curexc_traceback;
^
thriftpy/transport/cybase.c:3178:21: error: no member named 'exc_type' in 'struct _ts'
*type = tstate->exc_type;
~~~~~~ ^
thriftpy/transport/cybase.c:3179:22: error: no member named 'exc_value' in 'struct _ts'; did you mean 'curexc_value'?
*value = tstate->exc_value;
^~~~~~~~~
curexc_value
/Library/Frameworks/Python.framework/Versions/3.7/include/python3.7m/pystate.h:240:15: note: 'curexc_value' declared here
PyObject *curexc_value;
^
thriftpy/transport/cybase.c:3180:19: error: no member named 'exc_traceback' in 'struct _ts'; did you mean 'curexc_traceback'?
*tb = tstate->exc_traceback;
^~~~~~~~~~~~~
curexc_traceback
/Library/Frameworks/Python.framework/Versions/3.7/include/python3.7m/pystate.h:241:15: note: 'curexc_traceback' declared here
PyObject *curexc_traceback;
^
thriftpy/transport/cybase.c:3187:24: error: no member named 'exc_type' in 'struct _ts'
tmp_type = tstate->exc_type;
~~~~~~ ^
thriftpy/transport/cybase.c:3188:25: error: no member named 'exc_value' in 'struct _ts'; did you mean 'curexc_value'?
tmp_value = tstate->exc_value;
^~~~~~~~~
curexc_value
/Library/Frameworks/Python.framework/Versions/3.7/include/python3.7m/pystate.h:240:15: note: 'curexc_value' declared here
PyObject *curexc_value;
^
thriftpy/transport/cybase.c:3189:22: error: no member named 'exc_traceback' in 'struct _ts'; did you mean 'curexc_traceback'?
tmp_tb = tstate->exc_traceback;
^~~~~~~~~~~~~
curexc_traceback
/Library/Frameworks/Python.framework/Versions/3.7/include/python3.7m/pystate.h:241:15: note: 'curexc_traceback' declared here
PyObject *curexc_traceback;
^
thriftpy/transport/cybase.c:3190:13: error: no member named 'exc_type' in 'struct _ts'
tstate->exc_type = type;
~~~~~~ ^
fatal error: too many errors emitted, stopping now [-ferror-limit=]
20 errors generated.
error: command 'gcc' failed with exit status 1