Python
这里有两个兼容思路:第一,不考虑跨平台,生成操作系统的可执行文件,而非py代码文件。第二,通过代码实现(跨平台跨解释器,这也是小编接下来要教小伙伴的东西)。最典型的问题——Python的内置图形库,Tkinter图形库。我们都知道,我们Python2中导Tk包的时候为import Tkinter,而在Python3中则为import tkinter。如图(图为python3执行import Tkinter报错和Python2执行import tkinter报错)都是提示没有找到模块名,显然,Python3没有考虑太多向下兼容的问题,而问题来了,国内有绝大部分linux服务器上安装的还是python2(也是大部分linux默认的python解释器)
其实我们在代码方面要做的事相当简单,还是以Tkinter库为例:如果python解释器为3,我们就import tkinter,如果是python2,我们就import Tkinter,这样是不是相当简单?在这之前,我们需要获得Python解释器版本号,这里sys模块提供了一个变量(记得是一个模块内的变量),即version在python3打印出这个变量看看是什么?可以看到,这个变量正确的打印出我们要的解释器版本号。python3.4.3
那么,后面的一些信息显然不重要,例如硬件架构、发行时间。这些我们要怎么缩减掉呢?例如小编这里的3.4.3,我们要的只是主版本号信息,也就是3这个数据因此我们只需要获得sys.version[0]即可,是不是?print(sys.version[0])打印出主版本信息当然,我们如果某种特殊要求,想获得后两位版本信息可以用字符串切片方式——即sys.version[:5]或者sys.version[0:5]取前5位字符。
我们知道怎么获得版本信息之后,想根据主版本来判断导入的模块名,不是很简单吗?我们只需要给模块起个别名即可。import sysif(sys.version[0] == '3'): import tkinter as mytkelse: import Tkinter as mytkwindow = mytk.Tk()window.mainloop()这样是不是就解决了模块名的问题?
在python3和python2中完美运行,无报错。
最后一点就是Python的其他改动问题,最常见的print语句。在python2中,print是一条语句,而在python3中,print是一个函数(方法)最好的办法就是使用Python3的规定,用括号括起来。总结下:解决模块名不兼容的问题,用if做判断然后做一个模块引入的处理,其他的变动,统一使用python3的规定(奇怪的是python2是兼容的)
怎么关注?在经验的右上角小编头像旁边点击关注,如图。
怎么点赞?请在经验左侧点赞,如图。
怎么投票?在经验的下方点击投票,如图。
如果觉得小编写的还不错,可以动动鼠标把它分享给您的朋友。如何分享,鼠标移动到右下角第一个按钮上,在弹出的选项中进行分享,如图。不尽感激。
如有疑问,点击左下角的投票或者有得给小编留言,小编看到会第一时间回复您,谢谢
如果喜欢本经验,请关注我。可以把它分享给您的朋友,请点个投票点个收藏。谢谢,您的支持是我最大的动力。