Python3.5.2安装pycairo续

2 篇文章 0 订阅
2 篇文章 0 订阅

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

AttributeError: Can't pickle local object 'Context.__init__.<locals>.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文件(好吧我承认忘了怎么应用补丁文件了),接下来果然一切顺利啦~

特此记录。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值