Cygwin环境Python3.6安装pymqi遇mqic_r库缺失问题求助
解决Cygwin下pymqi编译链接mqic_r库失败的问题
核心原因
pymqi的setup.py会根据操作系统平台选择链接库:Windows平台用mqic,类Unix平台(包括Cygwin)用mqic_r,但你在Cygwin中使用的是Windows版IBM MQ库,该库仅提供mqic.dll,无mqic_r变体,导致链接失败。
解决方案
方案1:修改pymqi源码的编译配置(最可靠)
- 下载pymqi源码包(不使用预编译二进制):
pip download pymqi --no-binary :all: - 解压下载的
.tar.gz文件,进入源码目录。 - 编辑
setup.py,找到平台判断链接库的代码段:
原代码通常为:
修改为:import sys # ... if sys.platform.startswith('win'): libraries = ['mqic'] else: libraries = ['mqic_r']import sys # ... if sys.platform.startswith('win') or sys.platform == 'cygwin': libraries = ['mqic'] else: libraries = ['mqic_r'] - 执行本地编译安装,指定MQ的头文件和库文件路径:
python setup.py build_ext -I"/cygdrive/c/Program Files/IBM/MQ/Tools/c/include" -L"/cygdrive/c/Program Files/IBM/MQ/lib64" install
方案2:通过环境变量强制指定链接库
在Cygwin终端中先设置链接器参数,再执行pip安装:
export LDFLAGS="-l mqic" pip install --global-option=build_ext --global-option="-I/cygdrive/c/Program Files/IBM/MQ/Tools/c/include" --global-option="-L/cygdrive/c/Program Files/IBM/MQ/lib64" pymqi
该方法通过LDFLAGS强制gcc使用mqic库,覆盖setup.py中指定的mqic_r。
方案3:创建软链接模拟mqic_r库
在Cygwin中为mqic.dll创建名为mqic_r.dll的软链接,让链接器能找到目标文件:
cd "/cygdrive/c/Program Files/IBM/MQ/lib64" ln -s mqic.dll mqic_r.dll
之后再执行你原来的pip安装命令即可。
注意事项
- 确保Cygwin的位数(32/64位)与安装的IBM MQ库位数一致,对应使用
lib或lib64路径。 - 路径中包含空格时,需用引号包裹或转义空格(如
Program\ Files)。
内容的提问来源于stack exchange,提问作者igerard
相关产品推荐
相关产品推荐

