发布Python程序
Distribute Python script
最近需要把一个Python程序发布给其他学校的Collaborators使用,发现最主要的问题是版本不兼容:我使用的是Python 2.7版本,但其他学校可能使用2.5或者更老的2.4版本。因为我使用了大量新版的特有功能,直接把代码发布给对方是没法让对方使用的。因为老版本的Python不支持2.7版里的函数比如:os.SEEK_SET, all(), str.format() 。解决方法有两个:
1. 使用Freeze之类的工具
在Python source code里有一个Tools文件夹,里面有freeze这个工具。他可以把Python代码编译成C语言中的Python。这种方式可以解决简单的脚本,但复杂的脚本这种方法可能会带来其他的错误。
2. 重写代码
这是最根本的解决方法,把新版本特有的函数重新定义,或者用另一种方法实现。比如all()
# all is a keyword since Python 2.7 try: all except: def all(iterable): for element in iterable: if not element: return False return True
有一个工具可以检查当前的Python的向前兼容性:
https://github.com/ghewgill/pyqver
检查checkVCF.py的结果如下所示:
/net/fantasia/home/zhanxw/rvtests/rvMeta/sftp.clean/checkVCF/checkVCF.py
2.5 all
2.4 set, generator expression
2.3 logging, sum, enumerate
就是说我使用了2.5特有的all()函数,如果想在2.4版的Python上运行,需要重新定义all()函数。
类似的,set(), generator expression是2.4版才加入的特性,如果要支持2.3版本,就必须改写这两个地方。