【解决方案】mac系统下修复第三方Python包bug

发现问题

  今天在github上fork了CI 3.x的中文手册,按照README文档一步步进行Sphinx和相关工具的安装,最终build生成html版手册。操作到第6步执行`make html`的时候,抛出Python异常:

#这里省略了上面的输出信息
Exception occurred:
  File "/Library/Python/2.7/site-packages/Sphinx-1.5-py2.7.egg/sphinx/environment/managers/toctree.py", line 273, in _entries_from_toctree
    title = clean_astext(self.titles[ref])
AttributeError: ‘Toctree‘ object has no attribute ‘titles‘
The full traceback has been saved in /var/folders/2x/b7_jzxyd1dj5cq7q41yr18s00000gn/T/sphinx-err-BF9qkA.log, if you want to report the issue to the developers.
Please also report this if it was a user error, so that a better error message can be provided next time.
A bug report can be filed in the tracker at <https://github.com/sphinx-doc/sphinx/issues>. Thanks!
make: *** [html] Error 1

  显然问题出在sphinx库。必须要找到解决方案才能完成第6步。

解决方案

  通过提示信息访问它的github issue页面,用第四行的错误信息(AttributeError: ‘Toctree‘ object has no attribute ‘titles‘)作为关键词搜索,搜到了一条反映这个问题的issue。这个问题在6天前被提出,并且在4天前被close,说明问题已经解决。

  在评论列表中找到开发者的回复,根据他给的链接找到fix bug的commit,查看所做的修改,发现是将toctree.py文件第273行的

title = clean_astext(self.titles[ref])

这句改为

title = clean_astext(self.env.titles[ref])

这个修改刚好对应到产生异常信息的那句代码。于是根据异常信息找到toctree.py文件,将那行修改。

  最后再次执行`make html`,执行成功。

总结反思

  这次找解决方案的过程其实饶了很多弯路。做得比较差劲的地方有:

  • 没有注意到issue的状态。出现了异常以后,根据异常信息很快就找到了关于这个bug的issue页面。评论列表中开发者回复说会在周末发布一个新的release,由于没有留意issue已经被close了,所以最开始并不知道已经有新的提交修复了bug。
  • 没有注意到异常信息第二行已经给出了产生异常的文件,用搜索引擎和find命令找了好久。后来想到用easy_install命令重新安装Sphinx可能会将安装路径输出到终端,用这个方法果真找到了库的目录。(写这篇随笔的时候才发现错误信息里面已经告诉我文件的位置了。。。)

  当然也有值得自我夸奖的地方:

  • 看到开发者修复bug的提交后立即想到,在release出来以前我可以自己动手修复这个bug。因为Python是一门解释执行的语言,因此库代码一定是以源码的形式保存在某个目录下。
  • 解决了问题就值得夸奖
时间: 2024-10-09 14:29:05

【解决方案】mac系统下修复第三方Python包bug的相关文章

mac 系统下 sublime text2 出现Node.js 路径问题 以及解决方案

mac系统下   一般来说 我们默认安装的 node.js  都是存在/usr/local/bin/node中 在Sublime的htmlprettify插件配置中 比如 {  // Simply using `node` without specifying a path sometimes doesn't work :(  // https://github.com/victorporof/Sublime-HTMLPrettify#oh-noez-command-not-found  // 

mac系统下虚拟机parallels安装ubuntu 14.04

mac系统很棒,mac下的开发环境也很棒,但有时你还得需要ubuntu开发环境,比如进行嵌入式Linux交叉编译,使用Linaro toolchain- 其实mac系统下使用parallels虚拟机安装ubuntu相当的容易,下边讲一下mac系统下使用parallels虚拟机安装ubuntu 14.04桌面系统环境 视频教程 http://www.mr-wu.cn/video-tutorial-for-install-ubuntu-14-04-on-parallels-for-mac/ 下载Ub

Mac系统下虚拟机VMware Fusion下Win10如何通过Navcat连接Mysql 5.7

最近一直在折腾Mac系统,原先对Mac使用也不是很熟悉,所以安装过程中出现了很多问题.为了以后查阅方便,当然也为了使得和我一样的小白少踩一些坑, 所以就记录一下这些问题. 首先说一下VMware Fusion这个虚拟机软件吧.我下载的官方最新的版本8.5.7.然后开始安装,安装比较容易.最麻烦的就是如何安装WIn10系统呢?一开始我采取按部就班的方法,通过Mac自带的浏览器Safari去下载Win10 ISO的文件.结果速度太让人崩溃了,非常慢.后来我尝试把ISO通过百度网盘离线下载的方式先下载

Mac系统下使用VirtualBox虚拟机安装win7--第一步 安装vbox虚拟机

Mac系统下使用VirtualBox虚拟机安装win7操作步骤: 第一步 安装vbox虚拟机 1.先下载vbox,下载地址:: https://www.virtualbox.org/wiki/Downloads ,在页面中点击“VirtualBox 5.0.16 for OS X hosts amd64”下载链接,如图所示: 下载好了以后,在 Finder 中的下载目录中,找到“VirtualBox-5.0.16-105871-OSX.dmg”文件,运行安装,如图所示: 打开以后,双击安装界面中

[视频]mac系统下虚拟机parallels安装ubuntu 14.04视频教程

此文是http://www.mr-wu.cn/install-ubuntu-14-04-on-parallels-for-mac/这篇博文的补充,为整个ubuntu 14.04安装过程的视频录像. mac系统很棒,mac下的开发环境也很棒,但有时你还得需要ubuntu开发环境,比如进行嵌入式Linux交叉编译,使用Linaro toolchain-其实mac系统下使用parallels虚拟机安装ubuntu相当的容易,下边讲一下mac系统下使用parallels虚拟机安装ubuntu 14.04

mac系统下为emacs设置中文字体,解决乱码问题

最近换了个系统,现在用mac系统. 当打开emacs后,中文支持的不是很好.有的地方能显示,在.el文件的注释里显示为口口口口口口口口这样的框,如下图所示 找了半天,是因为中文字体的问题,只要设置好中文字体就行了. 以前在Linux下中文就支持的很好,不用配制中文字体就能显示. 配制代码如下(将其放到.emacs文件或init.el里就OK): ;; -------------------------------------------------------------------------

mac系统下的常用命令

这是我日常在mac下记录的一些常用终端命令: 1 java 2 javac 3 exit 4 /Users/lianxumac/Desktop/apktool1.5.2/反编译 ; exit; 5 /Users/lianxumac/Desktop/apktool1.5.2/反编译 ; exit; 6 /Users/lianxumac/Desktop/apktool1.5.2/反编译 ; exit; 7 /Users/lianxumac/Desktop/apktool1.5.2/反编译 ; exi

Mac系统下brew安装指定版本的nodejs小笔记

http://www.jincon.com/archives/429/ Mac系统下brew安装指定版本的nodejs小笔记

mac系统下(os x 10)手动设置IP提示无效服务器IP的解决方法

在mac系统下(os x 10),手动设置ip地址后,弹出错误提示"无效的服务器地址 " 解决的办法是:  ~ networksetup -listallnetworkservices  列出所有网络服务信息  ~ networksetup -setv6off "Ethernet"   停止对应网卡的ipV6服务                                    ~ networksetup -setmanual "Ethernet&q