Twisted是一个非常流行的,完全事件驱动的网络框架。
目前我的项目中,急需要一种流行的、稳定的,C/S结构的Python网络编程框架。我的选择有很多:Socket, SocketServer, Twisted, RPyC, XMLRPC…… 。
Socket是非常古老底层的框架,用它来编程有让人回到远古时代的感觉。SocketServer是比较成熟的模块了,但是它不支持RPC远程调用,且也比较古老了。XMLRPC与SocketServer差不多。RPyC看起来挺新的,但是开发者、文档都很少,稳定性不佳。Twisted是一个成熟、开发者众多、文档丰富的强大的网络框架,因此,我将它作为项目的C/S框架。
Twisted最新版本是11.0,它支持Python2.4-2.7. Twisted支持Python2.3的最近版本是9.0【1】. 下面将描述在Linux下安装Twisted9.0+Python2.3 与 在Windows下安装Twisted11.0+Python2.7的方法。
开源的项目在Windows平台下支持都不是很好。对于Python2.3来说,Twisted是没有已经编译好的.exe版本来支持它的(对于Python2.4-2.7,Twisted都有良好的支持的.exe版本)。因此,为了在Windows的Python2.3下使用Twisted来说,只能自己编译源码。然而,编译源码是非常困难的。我建议还是作罢,不要有这种想法。因此,在Windows下,我们是不能用Python2.3来进行Twisted编程的。也正是这个原因,我在Windows下的开发环境是:Python2.7+Twisted11.0。安装Twisted11.0之后,很有可能,你在导入from twisted.internet import protocol, reactor时会报错:
ImportError: No module named zope.interface
解决办法可参考【2】,下载zope.interface 3.6.2即可解决。
在Linux下,是可以使用Python2.3+Twisted9.0来进行开发的。Twisted9.0可以在【3】下载。在安装Twisted9.0时同样会出现ImportError: No module named zope.interface的错误,这里不能下载zope.interface. 我们下载zope 3.0.1final版本。为了在Linux下安装zope3.0.1,我们需要setuptools-0.6c11-py2.3.egg工具,这个工具可以google来下载。安装setuptools-0.6c11-py2.3.egg完之后,然后安装zope,最后安装Twisted,成功。
附注:以下命令的--prefix路径皆应设置为你自己系统中的路径。
先在用户目录下编辑.bash_profile文件,设置PYTHONPATH的路径。
安装setuptools-0.6c11-py2.3.egg的命令:(运行之后生成lib/**)
sh setuptools-0.6c11-py2.3.egg --prefix=/home/liaoqiqi/usr/
安装 zope3.0.1的命令:(运行之后生成lib/**)
python setup.py build
python setup.py install --prefix=/home/liaoqiqi/usr
安装Twisted9.0的命令(运行之后生成lib/***)
python setup.py build
python setup.py install --prefix=/home/liaoqiqi/usr
小技巧:
通过上面的设置,我们可以在lib/python2.3/site-packages下生成twisted和zope两个库文件夹。这确实可以正确的运行Twisted程序。但是,这样一来,每当我们要移植到不同机器时,就要重复的安装这些软件,非常麻烦。一个小技巧是:我们把生成的twisted和zope放到你的项目文件夹中,然后用os.path.append加入这个项目文件夹路径,这样,twisted和zope库文件可以随你的程序发布到具有相当配置的Linux机器上,而不用再重复的去安装这些软件。