Windows上安装Python第三方库pycairo的解决办法

问题背景:

帮同学写了个绘制词云的程序,想打包成.exe文件发过去,结果打包的文件总是缺各种各样的包,几乎调试了一天...,说下爬坑经历。出现的问题有点多到记不清了,不过总的问题就是缺包,而且缺了个很重要的包cairo,绘制词云的时候会用到绘图方面的,所以需要这个包。

出现问题:

如果缺包的话,在打包过程中可能会提示出如下报错:

fatal error C1083:Cannot open include file: 'cairo.h': No such file or directory

或者

ModuleNotFoundError: No module named 'cairo'

或者

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

既然报错,那就开始装包,如果直接装cairo包会失败,应该是没这个库,在Python上是pycairo库。

直接pip装pycairo包也会安装失败

报错

Running setup.py install for pycairo ... error

ERROR: Failed building wheel for pycairo

在查过一些资料后发现,pycairo需要编译才能正常安装,这就比较头疼,因为没有编译的环境。

后来这个问题就被搁置在了一边。。。

在接触完Python的基础语法后,经老师讲解才知道了一个专门维护Python需要编译包才能安装的网站,上面是已经编译后的第三方包,下载后直接安装就成。

具体的可以在这篇找到:

Python部分第三方库简要介绍及近期Python入门学习笔记

下载后,安装pycairo就能够成功安装了。

安装包从上面网站下当然可以,不过速度嘛,确实不敢恭维,1M的包都能下好几次,索性我将下载成功的包放到了CSDN我的资源那里,有需要的可以去免费下载。记得对应Python的版本和位号,cp后面是Python版本号。

目前不知道CSDN抽什么风,3.7版本的pycairo一直传不上去(明明还没有传过),如果实在下不下来,可以试一试下3.8版本的,不过我不知道会不会有兼容错误。

当然,现在生成的.exe还是不能正常运行...,估计还得调试,下面贴一些返回信息,与本文关联不大,有兴趣的可以看看。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
112 INFO: PyInstaller: 3.6
113 INFO: Python: 3.8.1
113 INFO: Platform: Windows-7-6.1.7601-SP1
115 INFO: wrote E:\Python\File\DrawWordCloudVersion1.0.spec
128 INFO: UPX is not available.
140 INFO: Extending PYTHONPATH with paths
['E:\\Python\\File', 'E:\\Python\\File']
141 INFO: checking Analysis
141 INFO: Building Analysis because Analysis-00.toc is non existent
142 INFO: Initializing module dependency graph...
146 INFO: Caching module graph hooks...
154 INFO: Analyzing base_library.zip ...
4146 INFO: Processing pre-find module path hook   distutils
4147 INFO: distutils: retargeting to non-venv dir 'e:\\python\\python3.8.1\\lib'
6294 INFO: Caching module dependency graph...
6443 INFO: running Analysis Analysis-00.toc
6471 INFO: Adding Microsoft.Windows.Common-Controls to dependent assemblies of final executable
  required by e:\python\python3.8.1\python.exe
6875 INFO: Analyzing E:\Python\File\DrawWordCloudVersion1.0.py
7123 INFO: Processing pre-find module path hook   site
7124 INFO: site: retargeting to fake-dir 'e:\\python\\python3.8.1\\lib\\site-packages\\PyInstaller\\fake-modules'
8109 INFO: Processing pre-safe import module hook   setuptools.extern.six.moves
15851 INFO: Processing pre-safe import module hook   six.moves
18713 INFO: Processing module hooks...
18713 INFO: Loading module hook "hook-distutils.py"...
18716 INFO: Loading module hook "hook-encodings.py"...
18852 INFO: Loading module hook "hook-lib2to3.py"...
18859 INFO: Loading module hook "hook-matplotlib.backends.py"...
19885 INFO:   Matplotlib backend "GTK3Agg": ignored
    The GTK3 backends require PyGObject
20516 INFO:   Matplotlib backend "GTK3Cairo": ignored
    The GTK3 backends require PyGObject
20982 INFO:   Matplotlib backend "MacOSX": ignored
    cannot import name '_macosx' from 'matplotlib.backends' (e:\python\python3.8.1\lib\site-packages\matplotlib\backends\__init__.py)
21452 INFO:   Matplotlib backend "nbAgg": ignored
    No module named 'IPython'
22016 INFO:   Matplotlib backend "Qt4Agg": added
22582 INFO:   Matplotlib backend "Qt4Cairo": added
23145 INFO:   Matplotlib backend "Qt5Agg": added
23694 INFO:   Matplotlib backend "Qt5Cairo": added
24350 INFO:   Matplotlib backend "TkAgg": added
25008 INFO:   Matplotlib backend "TkCairo": added
25675 INFO:   Matplotlib backend "WebAgg": added
26291 INFO:   Matplotlib backend "WX": ignored
    No module named 'wx'
26766 INFO:   Matplotlib backend "WXAgg": ignored
    No module named 'wx'
27230 INFO:   Matplotlib backend "WXCairo": ignored
    No module named 'wx'
27723 INFO:   Matplotlib backend "agg": added
28204 INFO:   Matplotlib backend "cairo": added
28853 INFO:   Matplotlib backend "pdf": added
29498 INFO:   Matplotlib backend "pgf": added
30036 INFO:   Matplotlib backend "ps": added
30518 INFO:   Matplotlib backend "svg": added
31127 INFO:   Matplotlib backend "template": added
31740 INFO: Loading module hook "hook-matplotlib.py"...
32160 INFO: Loading module hook "hook-numpy.core.py"...
32307 INFO: Loading module hook "hook-numpy.py"...
32309 INFO: Loading module hook "hook-PIL.Image.py"...
32710 INFO: Loading module hook "hook-PIL.py"...
32713 INFO: Excluding import 'tkinter'
32715 INFO:   Removing import of tkinter from module PIL.ImageTk
32716 INFO: Import to be excluded not found: 'FixTk'
32716 INFO: Excluding import 'PyQt4'
32720 INFO: Excluding import 'PySide'
32724 INFO: Excluding import 'PyQt5'
32730 INFO:   Removing import of PyQt5.QtCore from module PIL.ImageQt
32731 INFO:   Removing import of PyQt5.QtGui from module PIL.ImageQt
32733 INFO: Loading module hook "hook-PIL.SpiderImagePlugin.py"...
32735 INFO: Excluding import 'tkinter'
32737 INFO: Import to be excluded not found: 'FixTk'
32737 INFO: Loading module hook "hook-pkg_resources.py"...
33318 INFO: Processing pre-safe import module hook   win32com
33447 INFO: Excluding import '__main__'
33449 INFO:   Removing import of __main__ from module pkg_resources
33450 INFO: Loading module hook "hook-pycparser.py"...
33451 INFO: Loading module hook "hook-pydoc.py"...
33453 INFO: Loading module hook "hook-PyQt5.py"...
33636 INFO: Loading module hook "hook-PyQt5.QtCore.py"...
33736 INFO: Loading module hook "hook-PyQt5.QtGui.py"...
34017 INFO: Loading module hook "hook-PyQt5.QtWidgets.py"...
34322 INFO: Loading module hook "hook-pythoncom.py"...
34754 INFO: Loading module hook "hook-pywintypes.py"...
35206 INFO: Loading module hook "hook-scipy.py"...
35212 INFO: Loading module hook "hook-setuptools.py"...
35932 INFO: Loading module hook "hook-sysconfig.py"...
35933 INFO: Loading module hook "hook-win32com.py"...
36310 INFO: Loading module hook "hook-xml.dom.domreg.py"...
36311 INFO: Loading module hook "hook-xml.etree.cElementTree.py"...
36312 INFO: Loading module hook "hook-xml.py"...
36313 INFO: Loading module hook "hook-_tkinter.py"...
36569 INFO: checking Tree
36569 INFO: Building Tree because Tree-00.toc is non existent
36570 INFO: Building Tree Tree-00.toc
36662 INFO: checking Tree
36662 INFO: Building Tree because Tree-01.toc is non existent
36662 INFO: Building Tree Tree-01.toc
36730 INFO: Looking for ctypes DLLs
36829 INFO: Analyzing run-time hooks ...
36837 INFO: Including run-time hook 'pyi_rth__tkinter.py'
36840 INFO: Including run-time hook 'pyi_rth_multiprocessing.py'
36844 INFO: Including run-time hook 'pyi_rth_pkgres.py'
36846 INFO: Including run-time hook 'pyi_rth_win32comgenpy.py'
36852 INFO: Including run-time hook 'pyi_rth_pyqt5.py'
36854 INFO: Including run-time hook 'pyi_rth_mplconfig.py'
36857 INFO: Including run-time hook 'pyi_rth_mpldata.py'
36885 INFO: Looking for dynamic libraries
38980 INFO: Looking for eggs
38981 INFO: Using Python library e:\python\python3.8.1\python38.dll
38981 INFO: Found binding redirects:
[]
38995 INFO: Warnings written to E:\Python\File\build\DrawWordCloudVersion1.0\warn-DrawWordCloudVersion1.0.txt
39192 INFO: Graph cross-reference written to E:\Python\File\build\DrawWordCloudVersion1.0\xref-DrawWordCloudVersion1.0.html
39261 INFO: checking PYZ
39261 INFO: Building PYZ because PYZ-00.toc is non existent
39262 INFO: Building PYZ (ZlibArchive) E:\Python\File\build\DrawWordCloudVersion1.0\PYZ-00.pyz
41557 INFO: Building PYZ (ZlibArchive) E:\Python\File\build\DrawWordCloudVersion1.0\PYZ-00.pyz completed successfully.
41599 INFO: checking PKG
41600 INFO: Building PKG because PKG-00.toc is non existent
41600 INFO: Building PKG (CArchive) PKG-00.pkg
75198 INFO: Building PKG (CArchive) PKG-00.pkg completed successfully.
75238 INFO: Bootloader e:\python\python3.8.1\lib\site-packages\PyInstaller\bootloader\Windows-64bit\run.exe
75239 INFO: checking EXE
75240 INFO: Building EXE because EXE-00.toc is non existent
75240 INFO: Building EXE from EXE-00.toc
75241 INFO: Appending archive to EXE E:\Python\File\dist\DrawWordCloudVersion1.0.exe
75351 INFO: Building EXE from EXE-00.toc completed successfully.