Python3.5.2安裝pycairo續

上回書說到,給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文件(好吧我承認忘了怎麼應用補丁文件了),接下來果然一切順利啦~

特此記錄。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章