Python3.5.2安装pycairo续

上回书说到,给python3.5编译安装pycairo时,configure阶段卡住了:总是在生成的Build.py中报一个无法pickle局部对象的错误:

AttributeError: Can't pickle local object 'Context.__init__..node_class'

昨天发邮件询问有了回音,对方给了一个stackoverflow上的一个帖子:Not finding python3 when installing pycairo,虽然主贴不是这个内容,但是下面的回复中提到一个补丁,我看了一下,就是让Build.py中报错的那个store函数直接return,干脆不执行其内容。

我照做,果然上个错误消失,但是又遇到了新的坑:执行configure时报错:

command ['/usr/bin/python', '/usr/local/bin/python3.5-config', '--includes'] returned 1

想起昨天的网站上提供了两个补丁的下载,于是抱着试试看的心态看看补丁文件里面都写了啥,果然,补丁文件pycairo-1.10.0-waf_python_3_4-1.patch中的内容如下:

Submitted by:            Wayne Blaszczyk (wblaszcz at bigpond dot net dot au)
Date:                    2014-03-27
Initial Package Version: 1.10.0
Upstream Status:         unknown
Origin:                  Gentoo
URL:                     https://bugs.gentoo.org/show_bug.cgi?id=504342
Description:             Fix build with Python-3.4

--- a/waflib/Tools/python.py
+++ b/waflib/Tools/python.py
@@ -169,7 +169,7 @@
                conf.find_program('python-config-%s'%num,var='PYTHON_CONFIG',mandatory=False)
        includes=[]
        if conf.env.PYTHON_CONFIG:
-               for incstr in conf.cmd_and_log(conf.env.PYTHON+[conf.env.PYTHON_CONFIG,'--includes']).strip().split():
+               for incstr in conf.cmd_and_log([conf.env.PYTHON_CONFIG,'--includes']).strip().split():
                        if(incstr.startswith('-I')or incstr.startswith('/I')):
                                incstr=incstr[2:]
                        if incstr not in includes:

仔细看,替换的一行内容跟上面的报错内容似乎正好匹配。于是果断按照这个补丁的指示手工修改waflib/Tools/python.py文件(好吧我承认忘了怎么应用补丁文件了),接下来果然一切顺利啦~

特此记录。

你可能感兴趣的:(python,复杂网络,网络科学,科研)