关于zkpython的安装方法

xiaoxiao2021-02-28  85

最近开发的一个项目需要用python操作zookeeper,用到了zkpython,这里备录一下安装方法。主要是linux和Mac OS系统上的安装。windows上的安装方法我没有找到,可能是不支持(有知道的朋友可以分享一下)。

1 Linux上的安装 首先,安装要依赖的zookeeper的c的客户端。这里使用的是3.4.6稳定版,参照如下命令执行即可:

cd zookeeper-3.4.6/src/c ./configure make make install

然后,就可以安装zkpython了。可以通过pip和源码两种方式安装: 1)pip安装方法:

pip install zkpython

2)源码安装方法: 我采用的是源码安装。目前最新的zkpython源码下载地址: https://pypi.python.org/pypi/zkpython/0.4.2

#解压后进入目录执行以下命令 python setup.py install

然后需要配置一下环境变量,如在/etc/profile文件中加入下行:

export LD_LIBRARY_PATH=/usr/local/lib/

注意,如果不加环境变量,python在import zookeeper包的时候会报错:

>>> import zookeeper Traceback (most recent call last): File "<stdin>", line 1, in <module> ImportError: libzookeeper_mt.so.2: cannot open shared object file: No such file or directory

2 Mac OS上的安装 除了服务器上安装部署以外,我本地开发用的是Mac,所以在Mac上也折腾了一遍。 我先是参考类似Linux上的安装方法,在Mac上进行zookeeper 3.4.6版本的c客户端编译安装,但是报错了:

In file included from ./include/zookeeper.h:34: ./include/recordio.h:76:9: error: expected ')' int64_t htonll(int64_t v); ^ /usr/include/sys/_endian.h:141:25: note: expanded from macro 'htonll' #define htonll(x) __DARWIN_OSSwapInt64(x) ^ /usr/include/libkern/_OSByteOrder.h:78:30: note: expanded from macro '__DARWIN_OSSwapInt64' (__builtin_constant_p(x) ? __DARWIN_OSSwapConstInt64(x) : _OSSwapInt64(x)) ^ ./include/recordio.h:76:9: note: to match this '(' /usr/include/sys/_endian.h:141:25: note: expanded from macro 'htonll' #define htonll(x) __DARWIN_OSSwapInt64(x) ^ /usr/include/libkern/_OSByteOrder.h:78:5: note: expanded from macro '__DARWIN_OSSwapInt64' (__builtin_constant_p(x) ? __DARWIN_OSSwapConstInt64(x) : _OSSwapInt64(x)) ^ In file included from src/zookeeper.c:27: In file included from ./include/zookeeper.h:34: ./include/recordio.h:76:9: error: conflicting types for '__builtin_constant_p' int64_t htonll(int64_t v); ^ /usr/include/sys/_endian.h:141:25: note: expanded from macro 'htonll' #define htonll(x) __DARWIN_OSSwapInt64(x) ^ /usr/include/libkern/_OSByteOrder.h:78:6: note: expanded from macro '__DARWIN_OSSwapInt64' (__builtin_constant_p(x) ? __DARWIN_OSSwapConstInt64(x) : _OSSwapInt64(x)) ^ ./include/recordio.h:76:9: note: '__builtin_constant_p' is a builtin with type 'int ()' /usr/include/sys/_endian.h:141:25: note: expanded from macro 'htonll' #define htonll(x) __DARWIN_OSSwapInt64(x) ^ /usr/include/libkern/_OSByteOrder.h:78:6: note: expanded from macro '__DARWIN_OSSwapInt64' (__builtin_constant_p(x) ? __DARWIN_OSSwapConstInt64(x) : _OSSwapInt64(x)) ^ 2 errors generated. make[1]: *** [zookeeper.lo] Error 1 make: *** [all] Error 2

后来在网上找了下,确实有这个issue的报告: https://issues.apache.org/jira/browse/ZOOKEEPER-2049 说是3.4.6版本会存在这个问题,新版本中已经修复了。于是我到zookeeper官网下载了3.4.10版本,然后同样的方法编译安装c客户端,过程顺利,真的没有报错了。

接着,按照Linux上的方法安装zkpython即可。

转载请注明原文地址: https://www.6miu.com/read-52773.html

最新回复(0)