can't install thrift-sasl==0.2.1 with Python3.7
See original GitHub issueI tried to install ‘Impyla==0.15.0’ and ‘thrift-sasl==0.2.1’ with only Python3.7, but It failed.
root@bb7783bdb0f5:/tmp# python3.7 -m pip install thrift-sasl==0.2.1
Collecting thrift-sasl==0.2.1
Requirement already satisfied: sasl>=0.2.1 in /usr/local/lib/python3.7/dist-packages (from thrift-sasl==0.2.1)
Collecting thriftpy (from thrift-sasl==0.2.1)
Using cached https://files.pythonhosted.org/packages/f4/19/cca118cf7d2087310dbc8bd70dc7df0c1320f2652873a93d06d7ba356d4a/thriftpy-0.3.9.tar.gz
Requirement already satisfied: six in /usr/lib/python3/dist-packages (from sasl>=0.2.1->thrift-sasl==0.2.1)
Requirement already satisfied: ply<4.0,>=3.4 in /usr/local/lib/python3.7/dist-packages (from thriftpy->thrift-sasl==0.2.1)
Building wheels for collected packages: thriftpy
Running setup.py bdist_wheel for thriftpy ... error
Complete output from command /usr/bin/python3.7 -u -c "import setuptools, tokenize;__file__='/tmp/pip-build-euje28p9/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 /tmp/tmpzslvy37dpip-wheel- --python-tag cp37:
running bdist_wheel
running build
running build_py
creating build
creating build/lib.linux-x86_64-3.7
creating build/lib.linux-x86_64-3.7/thriftpy
copying thriftpy/hook.py -> build/lib.linux-x86_64-3.7/thriftpy
copying thriftpy/_compat.py -> build/lib.linux-x86_64-3.7/thriftpy
copying thriftpy/rpc.py -> build/lib.linux-x86_64-3.7/thriftpy
copying thriftpy/thrift.py -> build/lib.linux-x86_64-3.7/thriftpy
copying thriftpy/tornado.py -> build/lib.linux-x86_64-3.7/thriftpy
copying thriftpy/utils.py -> build/lib.linux-x86_64-3.7/thriftpy
copying thriftpy/server.py -> build/lib.linux-x86_64-3.7/thriftpy
copying thriftpy/__init__.py -> build/lib.linux-x86_64-3.7/thriftpy
creating build/lib.linux-x86_64-3.7/thriftpy/parser
copying thriftpy/parser/lexer.py -> build/lib.linux-x86_64-3.7/thriftpy/parser
copying thriftpy/parser/exc.py -> build/lib.linux-x86_64-3.7/thriftpy/parser
copying thriftpy/parser/parser.py -> build/lib.linux-x86_64-3.7/thriftpy/parser
copying thriftpy/parser/__init__.py -> build/lib.linux-x86_64-3.7/thriftpy/parser
creating build/lib.linux-x86_64-3.7/thriftpy/protocol
copying thriftpy/protocol/multiplex.py -> build/lib.linux-x86_64-3.7/thriftpy/protocol
copying thriftpy/protocol/json.py -> build/lib.linux-x86_64-3.7/thriftpy/protocol
copying thriftpy/protocol/compact.py -> build/lib.linux-x86_64-3.7/thriftpy/protocol
copying thriftpy/protocol/exc.py -> build/lib.linux-x86_64-3.7/thriftpy/protocol
copying thriftpy/protocol/__init__.py -> build/lib.linux-x86_64-3.7/thriftpy/protocol
copying thriftpy/protocol/binary.py -> build/lib.linux-x86_64-3.7/thriftpy/protocol
creating build/lib.linux-x86_64-3.7/thriftpy/transport
copying thriftpy/transport/sslsocket.py -> build/lib.linux-x86_64-3.7/thriftpy/transport
copying thriftpy/transport/_ssl.py -> build/lib.linux-x86_64-3.7/thriftpy/transport
copying thriftpy/transport/socket.py -> build/lib.linux-x86_64-3.7/thriftpy/transport
copying thriftpy/transport/__init__.py -> build/lib.linux-x86_64-3.7/thriftpy/transport
creating build/lib.linux-x86_64-3.7/thriftpy/contrib
copying thriftpy/contrib/__init__.py -> build/lib.linux-x86_64-3.7/thriftpy/contrib
creating build/lib.linux-x86_64-3.7/thriftpy/transport/memory
copying thriftpy/transport/memory/__init__.py -> build/lib.linux-x86_64-3.7/thriftpy/transport/memory
creating build/lib.linux-x86_64-3.7/thriftpy/transport/buffered
copying thriftpy/transport/buffered/__init__.py -> build/lib.linux-x86_64-3.7/thriftpy/transport/buffered
creating build/lib.linux-x86_64-3.7/thriftpy/transport/framed
copying thriftpy/transport/framed/__init__.py -> build/lib.linux-x86_64-3.7/thriftpy/transport/framed
creating build/lib.linux-x86_64-3.7/thriftpy/contrib/tracking
copying thriftpy/contrib/tracking/tracker.py -> build/lib.linux-x86_64-3.7/thriftpy/contrib/tracking
copying thriftpy/contrib/tracking/__init__.py -> build/lib.linux-x86_64-3.7/thriftpy/contrib/tracking
copying thriftpy/contrib/tracking/tracking.thrift -> build/lib.linux-x86_64-3.7/thriftpy/contrib/tracking
running build_ext
building 'thriftpy.transport.cybase' extension
creating build/temp.linux-x86_64-3.7
creating build/temp.linux-x86_64-3.7/thriftpy
creating build/temp.linux-x86_64-3.7/thriftpy/transport
x86_64-linux-gnu-gcc -pthread -DNDEBUG -g -fwrapv -O2 -Wall -g -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -fPIC -I/usr/include/python3.7m -c thriftpy/transport/cybase.c -o build/temp.linux-x86_64-3.7/thriftpy/transport/cybase.o
thriftpy/transport/cybase.c: In function ‘__Pyx__GetException’:
thriftpy/transport/cybase.c:3127:24: error: ‘PyThreadState {aka struct _ts}’ has no member named ‘exc_type’; did you mean ‘curexc_type’?
tmp_type = tstate->exc_type;
^~~~~~~~
curexc_type
thriftpy/transport/cybase.c:3128:25: error: ‘PyThreadState {aka struct _ts}’ has no member named ‘exc_value’; did you mean ‘curexc_value’?
tmp_value = tstate->exc_value;
^~~~~~~~~
curexc_value
thriftpy/transport/cybase.c:3129:22: error: ‘PyThreadState {aka struct _ts}’ has no member named ‘exc_traceback’; did you mean ‘curexc_traceback’?
tmp_tb = tstate->exc_traceback;
^~~~~~~~~~~~~
curexc_traceback
thriftpy/transport/cybase.c:3130:13: error: ‘PyThreadState {aka struct _ts}’ has no member named ‘exc_type’; did you mean ‘curexc_type’?
tstate->exc_type = local_type;
^~~~~~~~
curexc_type
thriftpy/transport/cybase.c:3131:13: error: ‘PyThreadState {aka struct _ts}’ has no member named ‘exc_value’; did you mean ‘curexc_value’?
tstate->exc_value = local_value;
^~~~~~~~~
curexc_value
thriftpy/transport/cybase.c:3132:13: error: ‘PyThreadState {aka struct _ts}’ has no member named ‘exc_traceback’; did you mean ‘curexc_traceback’?
tstate->exc_traceback = local_tb;
^~~~~~~~~~~~~
curexc_traceback
thriftpy/transport/cybase.c: In function ‘__Pyx__ExceptionSwap’:
thriftpy/transport/cybase.c:3154:24: error: ‘PyThreadState {aka struct _ts}’ has no member named ‘exc_type’; did you mean ‘curexc_type’?
tmp_type = tstate->exc_type;
^~~~~~~~
curexc_type
thriftpy/transport/cybase.c:3155:25: error: ‘PyThreadState {aka struct _ts}’ has no member named ‘exc_value’; did you mean ‘curexc_value’?
tmp_value = tstate->exc_value;
^~~~~~~~~
curexc_value
thriftpy/transport/cybase.c:3156:22: error: ‘PyThreadState {aka struct _ts}’ has no member named ‘exc_traceback’; did you mean ‘curexc_traceback’?
tmp_tb = tstate->exc_traceback;
^~~~~~~~~~~~~
curexc_traceback
thriftpy/transport/cybase.c:3157:13: error: ‘PyThreadState {aka struct _ts}’ has no member named ‘exc_type’; did you mean ‘curexc_type’?
tstate->exc_type = *type;
^~~~~~~~
curexc_type
thriftpy/transport/cybase.c:3158:13: error: ‘PyThreadState {aka struct _ts}’ has no member named ‘exc_value’; did you mean ‘curexc_value’?
tstate->exc_value = *value;
^~~~~~~~~
curexc_value
thriftpy/transport/cybase.c:3159:13: error: ‘PyThreadState {aka struct _ts}’ has no member named ‘exc_traceback’; did you mean ‘curexc_traceback’?
tstate->exc_traceback = *tb;
^~~~~~~~~~~~~
curexc_traceback
thriftpy/transport/cybase.c: In function ‘__Pyx__ExceptionSave’:
thriftpy/transport/cybase.c:3178:21: error: ‘PyThreadState {aka struct _ts}’ has no member named ‘exc_type’; did you mean ‘curexc_type’?
*type = tstate->exc_type;
^~~~~~~~
curexc_type
thriftpy/transport/cybase.c:3179:22: error: ‘PyThreadState {aka struct _ts}’ has no member named ‘exc_value’; did you mean ‘curexc_value’?
*value = tstate->exc_value;
^~~~~~~~~
curexc_value
thriftpy/transport/cybase.c:3180:19: error: ‘PyThreadState {aka struct _ts}’ has no member named ‘exc_traceback’; did you mean ‘curexc_traceback’?
*tb = tstate->exc_traceback;
^~~~~~~~~~~~~
curexc_traceback
thriftpy/transport/cybase.c: In function ‘__Pyx__ExceptionReset’:
thriftpy/transport/cybase.c:3187:24: error: ‘PyThreadState {aka struct _ts}’ has no member named ‘exc_type’; did you mean ‘curexc_type’?
tmp_type = tstate->exc_type;
^~~~~~~~
curexc_type
thriftpy/transport/cybase.c:3188:25: error: ‘PyThreadState {aka struct _ts}’ has no member named ‘exc_value’; did you mean ‘curexc_value’?
tmp_value = tstate->exc_value;
^~~~~~~~~
curexc_value
thriftpy/transport/cybase.c:3189:22: error: ‘PyThreadState {aka struct _ts}’ has no member named ‘exc_traceback’; did you mean ‘curexc_traceback’?
tmp_tb = tstate->exc_traceback;
^~~~~~~~~~~~~
curexc_traceback
thriftpy/transport/cybase.c:3190:13: error: ‘PyThreadState {aka struct _ts}’ has no member named ‘exc_type’; did you mean ‘curexc_type’?
tstate->exc_type = type;
^~~~~~~~
curexc_type
thriftpy/transport/cybase.c:3191:13: error: ‘PyThreadState {aka struct _ts}’ has no member named ‘exc_value’; did you mean ‘curexc_value’?
tstate->exc_value = value;
^~~~~~~~~
curexc_value
thriftpy/transport/cybase.c:3192:13: error: ‘PyThreadState {aka struct _ts}’ has no member named ‘exc_traceback’; did you mean ‘curexc_traceback’?
tstate->exc_traceback = tb;
^~~~~~~~~~~~~
curexc_traceback
error: command 'x86_64-linux-gnu-gcc' failed with exit status 1
----------------------------------------
Failed building wheel for thriftpy
Running setup.py clean for thriftpy
Failed to build thriftpy
Installing collected packages: thriftpy, thrift-sasl
Running setup.py install for thriftpy ... error
Complete output from command /usr/bin/python3.7 -u -c "import setuptools, tokenize;__file__='/tmp/pip-build-euje28p9/thriftpy/setup.py';f=getattr(tokenize, 'open', open)(__file__);code=f.read().replace('\r\n', '\n');f.close();exec(compile(code, __file__, 'exec'))" install --record /tmp/pip-28icftce-record/install-record.txt --single-version-externally-managed --compile:
running install
running build
running build_py
creating build
creating build/lib.linux-x86_64-3.7
creating build/lib.linux-x86_64-3.7/thriftpy
copying thriftpy/hook.py -> build/lib.linux-x86_64-3.7/thriftpy
copying thriftpy/_compat.py -> build/lib.linux-x86_64-3.7/thriftpy
copying thriftpy/rpc.py -> build/lib.linux-x86_64-3.7/thriftpy
copying thriftpy/thrift.py -> build/lib.linux-x86_64-3.7/thriftpy
copying thriftpy/tornado.py -> build/lib.linux-x86_64-3.7/thriftpy
copying thriftpy/utils.py -> build/lib.linux-x86_64-3.7/thriftpy
copying thriftpy/server.py -> build/lib.linux-x86_64-3.7/thriftpy
copying thriftpy/__init__.py -> build/lib.linux-x86_64-3.7/thriftpy
creating build/lib.linux-x86_64-3.7/thriftpy/parser
copying thriftpy/parser/lexer.py -> build/lib.linux-x86_64-3.7/thriftpy/parser
copying thriftpy/parser/exc.py -> build/lib.linux-x86_64-3.7/thriftpy/parser
copying thriftpy/parser/parser.py -> build/lib.linux-x86_64-3.7/thriftpy/parser
copying thriftpy/parser/__init__.py -> build/lib.linux-x86_64-3.7/thriftpy/parser
creating build/lib.linux-x86_64-3.7/thriftpy/protocol
copying thriftpy/protocol/multiplex.py -> build/lib.linux-x86_64-3.7/thriftpy/protocol
copying thriftpy/protocol/json.py -> build/lib.linux-x86_64-3.7/thriftpy/protocol
copying thriftpy/protocol/compact.py -> build/lib.linux-x86_64-3.7/thriftpy/protocol
copying thriftpy/protocol/exc.py -> build/lib.linux-x86_64-3.7/thriftpy/protocol
copying thriftpy/protocol/__init__.py -> build/lib.linux-x86_64-3.7/thriftpy/protocol
copying thriftpy/protocol/binary.py -> build/lib.linux-x86_64-3.7/thriftpy/protocol
creating build/lib.linux-x86_64-3.7/thriftpy/transport
copying thriftpy/transport/sslsocket.py -> build/lib.linux-x86_64-3.7/thriftpy/transport
copying thriftpy/transport/_ssl.py -> build/lib.linux-x86_64-3.7/thriftpy/transport
copying thriftpy/transport/socket.py -> build/lib.linux-x86_64-3.7/thriftpy/transport
copying thriftpy/transport/__init__.py -> build/lib.linux-x86_64-3.7/thriftpy/transport
creating build/lib.linux-x86_64-3.7/thriftpy/contrib
copying thriftpy/contrib/__init__.py -> build/lib.linux-x86_64-3.7/thriftpy/contrib
creating build/lib.linux-x86_64-3.7/thriftpy/transport/memory
copying thriftpy/transport/memory/__init__.py -> build/lib.linux-x86_64-3.7/thriftpy/transport/memory
creating build/lib.linux-x86_64-3.7/thriftpy/transport/buffered
copying thriftpy/transport/buffered/__init__.py -> build/lib.linux-x86_64-3.7/thriftpy/transport/buffered
creating build/lib.linux-x86_64-3.7/thriftpy/transport/framed
copying thriftpy/transport/framed/__init__.py -> build/lib.linux-x86_64-3.7/thriftpy/transport/framed
creating build/lib.linux-x86_64-3.7/thriftpy/contrib/tracking
copying thriftpy/contrib/tracking/tracker.py -> build/lib.linux-x86_64-3.7/thriftpy/contrib/tracking
copying thriftpy/contrib/tracking/__init__.py -> build/lib.linux-x86_64-3.7/thriftpy/contrib/tracking
copying thriftpy/contrib/tracking/tracking.thrift -> build/lib.linux-x86_64-3.7/thriftpy/contrib/tracking
running build_ext
building 'thriftpy.transport.cybase' extension
creating build/temp.linux-x86_64-3.7
creating build/temp.linux-x86_64-3.7/thriftpy
creating build/temp.linux-x86_64-3.7/thriftpy/transport
x86_64-linux-gnu-gcc -pthread -DNDEBUG -g -fwrapv -O2 -Wall -g -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -fPIC -I/usr/include/python3.7m -c thriftpy/transport/cybase.c -o build/temp.linux-x86_64-3.7/thriftpy/transport/cybase.o
thriftpy/transport/cybase.c: In function ‘__Pyx__GetException’:
thriftpy/transport/cybase.c:3127:24: error: ‘PyThreadState {aka struct _ts}’ has no member named ‘exc_type’; did you mean ‘curexc_type’?
tmp_type = tstate->exc_type;
^~~~~~~~
curexc_type
thriftpy/transport/cybase.c:3128:25: error: ‘PyThreadState {aka struct _ts}’ has no member named ‘exc_value’; did you mean ‘curexc_value’?
tmp_value = tstate->exc_value;
^~~~~~~~~
curexc_value
thriftpy/transport/cybase.c:3129:22: error: ‘PyThreadState {aka struct _ts}’ has no member named ‘exc_traceback’; did you mean ‘curexc_traceback’?
tmp_tb = tstate->exc_traceback;
^~~~~~~~~~~~~
curexc_traceback
thriftpy/transport/cybase.c:3130:13: error: ‘PyThreadState {aka struct _ts}’ has no member named ‘exc_type’; did you mean ‘curexc_type’?
tstate->exc_type = local_type;
^~~~~~~~
curexc_type
thriftpy/transport/cybase.c:3131:13: error: ‘PyThreadState {aka struct _ts}’ has no member named ‘exc_value’; did you mean ‘curexc_value’?
tstate->exc_value = local_value;
^~~~~~~~~
curexc_value
thriftpy/transport/cybase.c:3132:13: error: ‘PyThreadState {aka struct _ts}’ has no member named ‘exc_traceback’; did you mean ‘curexc_traceback’?
tstate->exc_traceback = local_tb;
^~~~~~~~~~~~~
curexc_traceback
thriftpy/transport/cybase.c: In function ‘__Pyx__ExceptionSwap’:
thriftpy/transport/cybase.c:3154:24: error: ‘PyThreadState {aka struct _ts}’ has no member named ‘exc_type’; did you mean ‘curexc_type’?
tmp_type = tstate->exc_type;
^~~~~~~~
curexc_type
thriftpy/transport/cybase.c:3155:25: error: ‘PyThreadState {aka struct _ts}’ has no member named ‘exc_value’; did you mean ‘curexc_value’?
tmp_value = tstate->exc_value;
^~~~~~~~~
curexc_value
thriftpy/transport/cybase.c:3156:22: error: ‘PyThreadState {aka struct _ts}’ has no member named ‘exc_traceback’; did you mean ‘curexc_traceback’?
tmp_tb = tstate->exc_traceback;
^~~~~~~~~~~~~
curexc_traceback
thriftpy/transport/cybase.c:3157:13: error: ‘PyThreadState {aka struct _ts}’ has no member named ‘exc_type’; did you mean ‘curexc_type’?
tstate->exc_type = *type;
^~~~~~~~
curexc_type
thriftpy/transport/cybase.c:3158:13: error: ‘PyThreadState {aka struct _ts}’ has no member named ‘exc_value’; did you mean ‘curexc_value’?
tstate->exc_value = *value;
^~~~~~~~~
curexc_value
thriftpy/transport/cybase.c:3159:13: error: ‘PyThreadState {aka struct _ts}’ has no member named ‘exc_traceback’; did you mean ‘curexc_traceback’?
tstate->exc_traceback = *tb;
^~~~~~~~~~~~~
curexc_traceback
thriftpy/transport/cybase.c: In function ‘__Pyx__ExceptionSave’:
thriftpy/transport/cybase.c:3178:21: error: ‘PyThreadState {aka struct _ts}’ has no member named ‘exc_type’; did you mean ‘curexc_type’?
*type = tstate->exc_type;
^~~~~~~~
curexc_type
thriftpy/transport/cybase.c:3179:22: error: ‘PyThreadState {aka struct _ts}’ has no member named ‘exc_value’; did you mean ‘curexc_value’?
*value = tstate->exc_value;
^~~~~~~~~
curexc_value
thriftpy/transport/cybase.c:3180:19: error: ‘PyThreadState {aka struct _ts}’ has no member named ‘exc_traceback’; did you mean ‘curexc_traceback’?
*tb = tstate->exc_traceback;
^~~~~~~~~~~~~
curexc_traceback
thriftpy/transport/cybase.c: In function ‘__Pyx__ExceptionReset’:
thriftpy/transport/cybase.c:3187:24: error: ‘PyThreadState {aka struct _ts}’ has no member named ‘exc_type’; did you mean ‘curexc_type’?
tmp_type = tstate->exc_type;
^~~~~~~~
curexc_type
thriftpy/transport/cybase.c:3188:25: error: ‘PyThreadState {aka struct _ts}’ has no member named ‘exc_value’; did you mean ‘curexc_value’?
tmp_value = tstate->exc_value;
^~~~~~~~~
curexc_value
thriftpy/transport/cybase.c:3189:22: error: ‘PyThreadState {aka struct _ts}’ has no member named ‘exc_traceback’; did you mean ‘curexc_traceback’?
tmp_tb = tstate->exc_traceback;
^~~~~~~~~~~~~
curexc_traceback
thriftpy/transport/cybase.c:3190:13: error: ‘PyThreadState {aka struct _ts}’ has no member named ‘exc_type’; did you mean ‘curexc_type’?
tstate->exc_type = type;
^~~~~~~~
curexc_type
thriftpy/transport/cybase.c:3191:13: error: ‘PyThreadState {aka struct _ts}’ has no member named ‘exc_value’; did you mean ‘curexc_value’?
tstate->exc_value = value;
^~~~~~~~~
curexc_value
thriftpy/transport/cybase.c:3192:13: error: ‘PyThreadState {aka struct _ts}’ has no member named ‘exc_traceback’; did you mean ‘curexc_traceback’?
tstate->exc_traceback = tb;
^~~~~~~~~~~~~
curexc_traceback
error: command 'x86_64-linux-gnu-gcc' failed with exit status 1
----------------------------------------
Command "/usr/bin/python3.7 -u -c "import setuptools, tokenize;__file__='/tmp/pip-build-euje28p9/thriftpy/setup.py';f=getattr(tokenize, 'open', open)(__file__);code=f.read().replace('\r\n', '\n');f.close();exec(compile(code, __file__, 'exec'))" install --record /tmp/pip-28icftce-record/install-record.txt --single-version-externally-managed --compile" failed with error code 1 in /tmp/pip-build-euje28p9/thriftpy/
thrift-sasl-0.2.1 uses thriftpy, and thriftpy does not support Python 3.7. Could you upgrade thrift-sasl to 0.3.0?
related isuue. https://github.com/cloudera/impyla/issues/268
Issue Analytics
- State:
- Created 4 years ago
- Reactions:2
- Comments:8 (1 by maintainers)
Top Results From Across the Web
Unable to install sasl using pip due to gcc errors
I want to install a particular library which includes several modules in the requirements. Two of them are sasl and sasl-thrift .
Read more >thrift-sasl - PyPI
Thrift SASL Python module that implements SASL transports for Thrift (`TSaslClientTransport`). ... pip install thrift-sasl. Copy PIP instructions.
Read more >Not able to connect to hiveserver2 to access hive... - 270635
Here I am assuming you installed already the Pyhive package if not please do that first! from phive import hive import re,os, time....
Read more >Problem in redash deployment - Self Hosted Redash Support
Redash Version: 8.0.2; Browser/OS: Ubuntu 16; How did you install ... I can't reproduce this. docker-compose build server works on my ...
Read more >'Sasl.H' File Not Found,Command 'Gcc' Failed With Exit Status 1
When installing pythonldap on mac the error is as follows: Modules/LDAPObject.c:18:10: fatal error: 'sasl.h' file not found #include It seems that the ...
Read more >
Top Related Medium Post
No results found
Top Related StackOverflow Question
No results found
Troubleshoot Live Code
Lightrun enables developers to add logs, metrics and snapshots to live code - no restarts or redeploys required.
Start Free
Top Related Reddit Thread
No results found
Top Related Hackernoon Post
No results found
Top Related Tweet
No results found
Top Related Dev.to Post
No results found
Top Related Hashnode Post
No results found
pip install cython then pip install thrift_sasl==0.2.1 and no thanks.
with python==3.7 I still can get error: ‘TSocket’ object has no attribute ‘isOpen’