使用meld或beyondcompare时出现cairo的错误: undefined symbol: cairo_tee_surface_index

之前在项目上构建文件系统时不知道什么操作把我主机的库cairo换了版本,导致我使用meld会出现以下错误:

$ meld 
Traceback (most recent call last):
  File "/usr/bin/meld", line 345, in <module>
    import meld.meldapp
  File "/usr/lib/python3/dist-packages/meld/meldapp.py", line 29, in <module>
    import meld.ui.util
  File "/usr/lib/python3/dist-packages/meld/ui/util.py", line 23, in <module>
    from meld.ui import gladesupport
  File "/usr/lib/python3/dist-packages/meld/ui/gladesupport.py", line 3, in <module>
    from meld import diffmap
  File "/usr/lib/python3/dist-packages/meld/diffmap.py", line 19, in <module>
    import cairo
  File "/usr/lib/python3/dist-packages/cairo/__init__.py", line 1, in <module>
    from ._cairo import *  # noqa: F401,F403
ImportError: /usr/lib/python3/dist-packages/cairo/_cairo.cpython-36m-x86_64-linux-gnu.so: undefined symbol: cairo_tee_surface_index

这是cairo库出了问题
我使用的是python3,重新安装一下吧:

$ pip3 install pycairo 
Collecting pycairo
  Downloading https://files.pythonhosted.org/packages/9d/6e/499d6a6db416eb3cdf0e57762a269908e4ab6638a75a90972afc34885b91/pycairo-1.20.0.tar.gz (344kB)
    100% |████████████████████████████████| 348kB 224kB/s 
Building wheels for collected packages: pycairo
  Running setup.py bdist_wheel for pycairo ... error
  Complete output from command /usr/bin/python3 -u -c "import setuptools, tokenize;__file__='/tmp/pip-build-t3ilwsoc/pycairo/setup.py';f=getattr(tokenize, 'open', open)(__file__);code=f.read().replace('\r\n', '\n');f.close();exec(compile(code, __file__, 'exec'))" bdist_wheel -d /tmp/tmpny12g7j3pip-wheel- --python-tag cp36:
  running bdist_wheel
  running build
  running build_py
  creating build
  creating build/lib.linux-x86_64-3.6
  creating build/lib.linux-x86_64-3.6/cairo
  copying cairo/__init__.py -> build/lib.linux-x86_64-3.6/cairo
  copying cairo/__init__.pyi -> build/lib.linux-x86_64-3.6/cairo
  copying cairo/py.typed -> build/lib.linux-x86_64-3.6/cairo
  running build_ext
  Requested 'cairo >= 1.15.10' but version of cairo is 1.14.10
  Command '['pkg-config', '--print-errors', '--exists', 'cairo >= 1.15.10']' returned non-zero exit status 1.
  
  ----------------------------------------
  Failed building wheel for pycairo
  Running setup.py clean for pycairo
Failed to build pycairo
Installing collected packages: pycairo
  Running setup.py install for pycairo ... error
    Complete output from command /usr/bin/python3 -u -c "import setuptools, tokenize;__file__='/tmp/pip-build-t3ilwsoc/pycairo/setup.py';f=getattr(tokenize, 'open', open)(__file__);code=f.read().replace('\r\n', '\n');f.close();exec(compile(code, __file__, 'exec'))" install --record /tmp/pip-8igppu57-record/install-record.txt --single-version-externally-managed --compile --user --prefix=:
    running install
    running build
    running build_py
    creating build
    creating build/lib.linux-x86_64-3.6
    creating build/lib.linux-x86_64-3.6/cairo
    copying cairo/__init__.py -> build/lib.linux-x86_64-3.6/cairo
    copying cairo/__init__.pyi -> build/lib.linux-x86_64-3.6/cairo
    copying cairo/py.typed -> build/lib.linux-x86_64-3.6/cairo
    running build_ext
    Requested 'cairo >= 1.15.10' but version of cairo is 1.14.10
    Command '['pkg-config', '--print-errors', '--exists', 'cairo >= 1.15.10']' returned non-zero exit status 1.
    
    ----------------------------------------
Command "/usr/bin/python3 -u -c "import setuptools, tokenize;__file__='/tmp/pip-build-t3ilwsoc/pycairo/setup.py';f=getattr(tokenize, 'open', open)(__file__);code=f.read().replace('\r\n', '\n');f.close();exec(compile(code, __file__, 'exec'))" install --record /tmp/pip-8igppu57-record/install-record.txt --single-version-externally-managed --compile --user --prefix=" failed with error code 1 in /tmp/pip-build-t3ilwsoc/pycairo/

以上说明版本太老了,那安装一个新的吧,就1.15.10

$ pip3 install pycairo==1.15.10
Collecting pycairo==1.15.10
  Could not find a version that satisfies the requirement pycairo==1.15.10 (from versions: 1.11.0, 1.11.1, 1.12.0, 1.13.0, 1.13.1, 1.13.2, 1.13.3, 1.13.4, 1.14.0, 1.14.1, 1.15.0, 1.15.1, 1.15.2, 1.15.3, 1.15.4, 1.15.5, 1.15.6, 1.16.0, 1.16.1, 1.16.2, 1.16.3, 1.17.0, 1.17.1, 1.18.0, 1.18.1, 1.18.2, 1.19.0, 1.19.1, 1.20.0)
No matching distribution found for pycairo==1.15.10

没有这个版本可以安装,那就安装更新的最好:

$ pip3 install pycairo==1.16.1
Collecting pycairo==1.16.1
  Downloading https://files.pythonhosted.org/packages/1f/8d/992c2c80c0fd56417029e886786cc1b40e6a55aba1c39f1418fad6f7c9aa/pycairo-1.16.1.tar.gz (180kB)
    100% |████████████████████████████████| 184kB 369kB/s 
Building wheels for collected packages: pycairo
  Running setup.py bdist_wheel for pycairo ... done
  Stored in directory: /home/sun/.cache/pip/wheels/6e/74/66/0e3ee5433d497d2655efd07aaec0548a39ef618d26d6db519f
Successfully built pycairo
Installing collected packages: pycairo
Successfully installed pycairo-1.16.1

成功了,meld可以正常使用了

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值