关于zkpython的安装方法

本文介绍如何在Linux和MacOS系统上安装并配置Python操作Zookeeper的库zkpython,包括依赖安装、环境配置等关键步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

最近开发的一个项目需要用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即可。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值