「ZIM」- 概念 | 术语 | Terms | Fundamentals | 模块交互

问题描述

在学习及工作中,我们通过 Zim 记录笔记、梳理知识,我们对 Zim 的依赖性比较强。在使用的过程中,我们也发现部分问题(Bug),我们也像社区提交 Issus 来反馈问题;

但是,Zim 终究是个开源项目,贡献者们都有自己的工作,大家维护项目的精力也是有限的。所以,为了能尽早的解决问题,我们决定参与到该项目中,来修复使用过程中遇到的问题;

该笔记将记录:我们研究 Zim 项目源码的过程(学习方法、架构设计、问题排查、调试技巧),并尝试解决相关使用问题(以获得更好的使用体验,这也是我们参与项目的动力);

解决方案

1)学习 Python 编程:该项目由 Python 语言开发,所以需要学会使用 Python 语言编程;
2)学习 Python 项目调试方法:

Address already in use / Listener did not start

问题描述

INFO: This is zim 0.65
WARNING: Could not find all icon sizes for the application icon
Exception in thread Thread-1:
Traceback (most recent call last):
  File "/usr/lib/python2.7/threading.py", line 801, in __bootstrap_inner
	self.run()
......
  File "/usr/lib/python2.7/socket.py", line 228, in meth
	return getattr(self._sock,name)(*args)
error: [Errno 98] Address already in use
大学英语(一) pdf
ERROR: Exception in main()
Traceback (most recent call last):
  File "/usr/local/lib/python2.7/dist-packages/zim/main/init.py", line 741, in main
	ZIM_APPLICATION.run(*argv[1:])
......
  File "/usr/local/lib/python2.7/dist-packages/zim/main/ipc.py", line 97, in start_listening
	raise AssertionError, 'Listener did not start'
AssertionError: Listener did not start

问题原因

强制结束 Zim 进程;

解决方法

删除 /tmp/zim-root 文件夹。https://answers.launchpad.net/zim/+question/236195

ImportError: No module named gobject

问题描述

	from zim.signals import SignalEmitter, SIGNAL_AFTER
  File "/usr/local/lib/python2.7/dist-packages/zim/signals.py", line 8, in <module>
	import gobject
ImportError: No module named gobject

问题原因

缺少 python-gobject 模块

解决方案

# Ubuntu 16.04 LTS
apt-get install python-gobject-2

# 其他的发行版也是类似的名称

ImportError: No module named gtk

问题描述

  File "/usr/local/lib/python2.7/dist-packages/zim/main/init.py", line 572, in _run_cmd
	self._run_main_loop(cmd)
  File "/usr/local/lib/python2.7/dist-packages/zim/main/init.py", line 579, in _run_main_loop
	import gtk, gobject
ImportError: No module named gtk

问题原因

缺少 python-gtk2 模块

解决方案

# Ubuntu 16.04 LTS
apt-get install python-gtk2

# 其他的发行版也是类似的

You must not use 8-bit bytestrings…

问题描述

ProgrammingError: You must not use 8-bit bytestrings unless you use a text_facto
ry that can interpret 8-bit bytestrings (like text_factory = str). It is highly
recommended that you instead just switch your application to Unicode strings.

问题原因

运行 Zim 内置的 WebServer 时,访问“首页”时产生了该问题。这里的“首页”指的是 Zim 默认的一个索引页面(此时的 URL 中没有任何页面参数,形如`http://localhost:8080/’%EF%BC%89%E3%80%82%E5%B9%B6%E4%B8%94%E6%88%91%E4%BB%AC%E5%9C%A8%E9%A1%B5%E9%9D%A2%E4%B8%AD%E4%BD%BF%E7%94%A8%E4%BA%86%E5%A6%82%E4%B8%8B%E7%9A%84%E6%A8%A1%E6%9D%BF%E4%BB%A3%E7%A0%81%E6%89%8D%E8%A7%A6%E5%8F%91%E4%BA%86%E8%BF%99%E4%B8%AA%E9%97%AE%E9%A2%98%EF%BC%9A

<title>
[% FOR page IN pages %]
[% page.title %]
[% END %] - www.k4nz.com
</title>

在文件名中,存在 Unicode 字符;

解决方案

找到文件名中的那个中文字符;