最近项目中需要使用python3访问rocketmq,由于本人使用的是Macos M1系统,当在使用rocketmq-client-python时出现了一系列问题,在这记录下此处的坑点!

出现的主要问题

初始出现 ImportError: rocketmq dynamic library not found 的报错,由此需要进行rocketmq-client-cpp-2.0.0的安装,当以https://github.com/apache/rocketmq-client-python进行安装后发现出现以下错误:
could not be loaded: tried: '/usr/local/lib/libproxychains4.dylib' (mach-o file, but is an incompatible architecture (have 'arm64', need 'arm64e')

这时候就需要自己去下载源码自行编译进行安装使用了,具体见一下步骤:

第一步:先确认自己电脑上安装了automake 和 cmake,可以直接使用brew进行安装

brew install automakebrew install cmake

第二步:在 https://github.com/apache/rocketmq-client-cpp/releases 选择想要的版本下载源码,本人使用的是2.0.0 即为https://github.com/apache/rocketmq-client-cpp/releases/tag/2.0.0地址下载后面的Source code(tar.gz)源码文件
解压后进入此文件根目录,直接执行build.sh脚本,这时候编译一定是失败的,但是此时源码根目录中会出现一个重要的文件夹tmp_down_dir ,第一步到此就结束了。

第三步:官方匹配的boost包是1.58版本的,这个在达尔文arm64中是不能用的,此时直接通过https://boostorg.jfrog.io/artifactory/main/release/1.77.0/source/boost_1_77_0.tar.gz进行下载,将下载后的boost_1_77_0.tar.gz文件直接放到第一步生成的tmp_down_dir文件夹中,然后接着重新执行build.sh脚本。

如果你编译中间出现jsoncpp-0.10.6.zip文件下载失败,可以直接复制它的地址https://github.com/open-source-parsers/jsoncpp/archive/0.10.6.zip直接把jsoncpp-0.10.6.zip下载下来也放到tmp_down_dir文件夹中就行。

第四步:当编译成功后执行如下操作:
下面操作可能需要root权限,如果无法直接执行就sudo执行
mkdir -p /usr/local/include/rocketmq
cp rocketmq-client-cpp-2.0.0/bin/* /usr/local/include/rocketmq
cp rocketmq-client-cpp-2.0.0/bin/librocketmq* /usr/local/lib
install_name_tool -id “@rpath/librocketmq.dylib” /usr/local/lib/librocketmq.dylib

第五步:如果之前已经安装过rocketmq-client-python就执行一下操作卸载重新安装下rocketmq-client-python

pip3 uninstall rocketmq-client-pythonpip3 install rocketmq-client-python