【问题标题】:python pyinstaller no library called "cairo" was foundpython pyinstaller 找不到名为“cairo”的库
【发布时间】:2020-03-15 03:00:31
【问题描述】:

在使用 pyinstaller 编译依赖于 matplotlibpyside2 的应用程序时出现这些错误

环境

 PyInstaller: 3.5
 Python: 3.7.5
 Platform: Windows-10-10.0.14393-SP0

错误

    31256 INFO:   Matplotlib backend GTK3Agg: ignored
    Traceback (most recent call last):
    File c:\users\digikwondo\pycharmprojects\guitest\venv\lib\site- 
    packages\matplotlib\backends\backend_cairo.py, line 14, in <module>
    import cairo
    ModuleNotFoundError: No module named cairo

    During handling of the above exception, another exception occurred:

    Traceback (most recent call last):
    File "<string>", line 12, in <module>
    File "c:\users\digikwondo\pycharmprojects\guitest\venv\lib\site- 
    packages\matplotlib\backends\backend_gtk3agg.py, line 4, in <module>
    from . import backend_agg, backend_cairo, backend_gtk3
    File "c:\users\digikwondo\pycharmprojects\guitest\venv\lib\site- 
    packages\matplotlib\backends\backend_cairo.py", line 20, in <module>
    import cairocffi as cairo
    File "c:\users\digikwondo\pycharmprojects\guitest\venv\lib\site-packages\cairocffi\__init__.py", line 50, in <module>
    ('libcairo.so', 'libcairo.2.dylib', 'libcairo-2.dll'))
    File "c:\users\digikwondo\pycharmprojects\guitest\venv\lib\site-packages\cairocffi\__init__.py", line 45, in dlopen
    raise OSError(error_message)  # pragma: no cover
    OSError: no library called "cairo" was found
    no library called "libcairo-2" was found
    cannot load library 'libcairo.so': error 0x7e
    cannot load library 'libcairo.2.dylib': error 0x7e
    cannot load library 'libcairo-2.dll': error 0x7e

我的导入语句

from PySide2.QtWidgets import (QApplication, QLabel, QPushButton, QMessageBox, QWidget, QLineEdit, QTextBrowser, QListWidget, QFileDialog, QTabWidget, QGridLayout) 
from PySide2.QtCore import (Slot, QRect, QFile, QTextStream)
from PySide2.QtGui import (QIcon, QFont)
from zipfile import (ZipFile)
from pandas.io.common import EmptyDataError
import glob
import sys
import os
import time
import pandas
import logging
import webbrowser
from pathlib import Path
from matplotlib.backends.backend_qt5agg import FigureCanvasQTAgg as FigureCanvas
from matplotlib.backends.backend_qt5agg import NavigationToolbar2QT as NavigationToolbar
import matplotlib.pyplot as plt
from matplotlib.ticker import MaxNLocator as mxl
from pandas.plotting import register_matplotlib_converters
register_matplotlib_converters()

已安装 pip 包

altgraph          0.16.1
arrow             0.15.4
attrs             19.3.0
cairocffi         1.1.0
certifi           2019.9.11
cffi              1.13.2
chardet           3.0.4
Click             7.0
cycler            0.10.0
future            0.18.2
joblib            0.14.0
kiwisolver        1.1.0
llvmlite          0.30.0
matplotlib        3.1.1
Nuitka            0.6.5
numba             0.45.1
numpy             1.17.4
packaging         19.1
pandas            0.25.1
pefile            2019.4.18
pip               19.0.3
pip-review        1.0
pip-tools         4.1.0
pycparser         2.19
PyInstaller       3.5
pyparsing         2.4.2
pypiwin32         223
PyQt5             5.13.0
PyQt5-sip         4.19.19
pyqt5-tools       5.13.0.1.5
PySide2           5.13.1
python-dateutil   2.8.1
python-dotenv     0.10.3
pytz              2019.2
pywin32           225
pywin32-ctypes    0.2.0
scikit-learn      0.21.3
scipy             1.3.1
setuptools        41.2.0
setuptools-freeze 0.0.1
shiboken2         5.13.1
sip               4.19.8
six               1.13.0
tornado           6.0.3
umap              0.1.1
umap-learn        0.3.10

我不确定 pyinstaller 完成后会产生什么影响,并且我的应用程序运行没有问题。 希望能帮助您理解这些错误以及如何解决它们

【问题讨论】:

  • @dikiwondo:为了表示感谢,您能否将答案标记为已接受? (问题旁边的灰色勾号)。

标签: python-3.x windows pyinstaller cairo pycairo


【解决方案1】:

在 Windows 上,在 cairocffi 之上,您需要从 here 安装 Gtk++,并确保库 libcairo-2.dll 在系统 PATH 上可用。

【讨论】:

  • 感谢您的建议,安装 gtk++ 解决了问题。有没有办法用 pyinstaller 打包所需的文件,所以不需要安装 gtk ?目标是使我的应用程序可移植(只有一个独立的 exe)
  • 您需要安装所有依赖项 (Gtk++) 以及您的应用程序。它不符合一个可移植可执行文件的想法。
  • 只是添加,使用默认选项安装它会自动将其添加到路径中。并确保关闭并重新打开您的 ide 以使其正常工作。
猜你喜欢
  • 1970-01-01
  • 2020-04-16
  • 2017-02-02
  • 1970-01-01
  • 2017-11-23
  • 2023-02-16
  • 1970-01-01
  • 1970-01-01
  • 2018-05-09
相关资源
最近更新 更多