【发布时间】:2013-08-11 21:51:16
【问题描述】:
尝试加载使用 boost python 编译的 python 模块时出现以下导入错误。
ImportError: /path/to/library/libxml2.so.2: symbol gzopen64, version ZLIB_1.2.3.3 not defined in file libz.so.1 with link time reference
奇怪的是,如果这是要导入的非标准模块,我看不到此错误。即,如果我先导入其他模块,然后再导入此模块,则会因导入错误而失败。不知道出了什么问题或如何调试。
编辑: 要准确显示问题:
$ python -c 'import json, libMYBOOST_PY_LIB' # DOES NOT WORK!!!
Traceback (most recent call last):
File "<string>", line 1, in <module>
ImportError: path/to/xml_library/libxml2.so: symbol gzopen64, version ZLIB_1.2.3.3 not defined in file libz.so.1 with link time reference
$ python -c 'import libMYBOOST_PY_LIB, json' # WORKS NOW!!!
$
它不仅仅是 json,在我的模块之前导入时,很少有其他模块也会导致同样的问题。例如。 urllib2
【问题讨论】:
-
从 json 和 libMYBOOST_PY_LIB 导入 libz 是否存在版本冲突,由导入顺序解决(获取最新的)?
-
ldd /path/to/_json.so没有libz.so作为依赖项。我检查对了吗? -
可能您需要展示如何编译和生成 libMYBOOST_PY_LIB,例如 g++ 命令。它可以提示您如何链接 libxml 库。
-
正在做:ldd /usr/lib/x86_64-linux-gnu/libjson-glib-1.0.so.0.1502.0 在 Ubuntu 中显示 libz.so.1 => /lib/x86_64-linux- gnu/libz.so.1 (0x00007fd6f1892000)
标签: c++ python import boost-python shared-libraries