两种兼容Python2和Python3的导入库的方法

Python3和Python2是不兼容的,但是由于一些历史遗留问题,比如一些服务器只安装有Python2,一些安装有Python3,所以我们在实际写代码的时候就不得不考虑兼容Python2和Python3了。

下面简单介绍两种兼容Python2和Python3的导入库的方法。

 

一:使用ImportError

以configparser为例。读写配置模块在Python2中是大写开头的的Configparser,在Python3中是小写的configparser,这就导致了读写配置的代码不能直接兼容Python2和Python3。我们需要做一些修改,利用ImportError,不管三七二十一,先导入一个版本,如果出现ImportError在切换到另外一个版本。不是configparser就是Configparser

# -*- coding: utf-8 -*-

try:
    # Python3
    from configparser import ConfigParser
except ImportError:
    # Python2
    from ConfigParser import ConfigParser

config = ConfigParser()

# do something

代码修改为下面的也可以,先导入Python2的版本,出错再导入Python3的版本。

# -*- coding: utf-8 -*-

try:
    # Python2
    from ConfigParser import ConfigParser  
except ImportError:
    # Python3
    from configparser import ConfigParser  

config = ConfigParser()

# do something

我们再举一个例子。

urllib库也是不兼容Python2和Python3的。废话少说,直接上代码:

# -*- coding: utf-8 -*-

try:
    # Python2
    from urllib import urlencode  
    from urllib import quote
    from urlparse import urlparse
    import urllib2 as request
except ImportError:
    # Python3
    from urllib.parse import urlencode  
    from urllib.parse import quote
    from urllib.parse import urlparse
    import urllib.request as request

# do something

二:根据版本来判断

根据sys.version_info.major来判断Python的版本,根据不同的版本导入不同的库。

# -*- coding: utf-8 -*-

import sys


if sys.version_info.major == 2:
    # Python2
    from urllib import urlencode
    from urllib import quote
    from urlparse import urlparse
    import urllib2 as request
else:
    # Python3
    from urllib.parse import urlencode  
    from urllib.parse import quote
    from urllib.parse import urlparse
    import urllib.request as request


# do something

 

你可能感兴趣的:(Python)