首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >由于pycairo 1.20,无法导入matplotlib

由于pycairo 1.20,无法导入matplotlib
EN

Stack Overflow用户
提问于 2020-10-26 20:52:28
回答 1查看 62关注 0票数 1

我在导入python3脚本的matplotlibrary时遇到了问题。

我的系统:PythonLinux7(核心)内核3.10.0-1062.9.1.el7.x86_64Python3.6.8

最小重现:

设置:

代码语言:javascript
运行
复制
python3 -m venv tester
source tester/bin/activate
pip install matplotlib
pip list

提供:

代码语言:javascript
运行
复制
Package         Version
--------------- ---------
certifi         2020.6.20
cycler          0.10.0
kiwisolver      1.2.0
matplotlib      3.3.2
numpy           1.19.2
Pillow          8.0.1
pip             18.1
pyparsing       2.4.7
python-dateutil 2.8.1
setuptools      40.6.2
six             1.15.0

现在到实际的复制:

代码语言:javascript
运行
复制
python3
>>>from matplotlib import pyplot as plt

提供:

代码语言:javascript
运行
复制
Traceback (most recent call last):
  File "/gpfs/apps/shared/mpo/tester/lib/python3.6/site-packages/matplotlib/backends/backend_cairo.py", line 15, in <module>
    import cairo
ModuleNotFoundError: No module named 'cairo'

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/gpfs/apps/shared/mpo/tester/lib/python3.6/site-packages/matplotlib/backends/backend_cairo.py", line 21, in <module>
    import cairocffi as cairo
ModuleNotFoundError: No module named 'cairocffi'

The above exception was the direct cause of the following exception:

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/gpfs/apps/shared/mpo/tester/lib/python3.6/site-packages/matplotlib/pyplot.py", line 2336, in <module>
    switch_backend(rcParams["backend"])
  File "/gpfs/apps/shared/mpo/tester/lib/python3.6/site-packages/matplotlib/pyplot.py", line 276, in switch_backend
    class backend_mod(matplotlib.backend_bases._Backend):
  File "/gpfs/apps/shared/mpo/tester/lib/python3.6/site-packages/matplotlib/pyplot.py", line 277, in backend_mod
    locals().update(vars(importlib.import_module(backend_name)))
  File "/apps/shared/taifun/x86_64/apps/DATAPROCESSING/python/3.6.8/system/lib/python3.6/importlib/__init__.py", line 126, in import_module
    return _bootstrap._gcd_import(name[level:], package, level)
  File "/gpfs/apps/shared/mpo/tester/lib/python3.6/site-packages/matplotlib/backends/backend_cairo.py", line 25, in <module>
    "is installed") from err
ImportError: cairo backend requires that pycairo>=1.11.0 or cairocffiis installed

好的,我们安装pycairo:

代码语言:javascript
运行
复制
pip install pycairo

提供:

代码语言:javascript
运行
复制
Collecting pycairo
  Downloading <internal-package-server>/5a10cb7f9ae0d/pycairo-1.20.0.tar.gz (344kB)
    100% |████████████████████████████████| 348kB 3.7MB/s
  Installing build dependencies ... done
Installing collected packages: pycairo
  Running setup.py install for pycairo ... done
Successfully installed pycairo-1.20.0

让我们检查一下:

代码语言:javascript
运行
复制
pip list

看起来没问题:

代码语言:javascript
运行
复制
Package         Version
--------------- ---------
...
pycairo         1.20.0
...

新尝试:

代码语言:javascript
运行
复制
python3
>>>from matplotlib import pyplot as plt

不,同样的错误:

代码语言:javascript
运行
复制
...
ImportError: cairo backend requires that pycairo>=1.11.0 or cairocffiis installed

现在,将版本调整为1.11版本:

代码语言:javascript
运行
复制
pip uninstall pycairo
pip install pycairo==1.11
python3
>>> from matplotlib import pyplot as plt
>>>

万岁!

但是为什么-> 1.20不能在这里工作呢? 1.11 pycairo 1.20不应该是一个破坏性的变化,其他人应该更早地通知这个问题。我可能遗漏了什么?或者我应该在matplotlib上打开一个工单,这样他们就可以适应他们请求了。名单?

提前谢谢。

EN

回答 1

Stack Overflow用户

发布于 2020-10-27 21:37:54

好了,我设法解决了这个问题。有几个步骤是必要的:

从pycairo切换到cairocffi (作为导出suggested)

  • Update pip和setuptools (通过进入gitlab-cy.yml),旧版本(40.x)与cairocff的.tar.gz

  • 有问题为我公司的内部pypi镜像设置证书路径(导出REQUEST_CA_BUNDLE)
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64537483

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档