在你的代码中支持多个Python版本?

2024-06-10 16:09:48 发布

您现在位置:Python中文网/ 问答频道 /正文

今天我尝试在一个针对python2.6编写的脚本中使用pyPdf1.12。当运行我的脚本,甚至导入pyPdf时,我都会收到关于不推荐使用的功能(md5->;hashsum,sets)的抱怨。我想贡献一个补丁来让它在2.6中干净地工作,但是我想作者不想破坏与旧版本(2.5及更早版本)的兼容性。在

搜索Google和Stack Overflow到目前为止还没有找到任何结果。我觉得在import语句的try/except块实现了类似的功能,但是没有找到任何示例。对于支持多个Python版本,是否有公认的最佳实践?在


Tags: importgt功能版本脚本stackgooglesets
3条回答

这里支持Python的多个版本。您可以a)有条件地使用较新的版本,这需要一些工作,或者b)关闭警告,这实际上应该是默认的(并且是在较新的python上)。在

你当然可以

try:
  import v26
except ImportError:
  import v25

Dive Into Python—Using Exceptions for Other Purposes

有两种方法:


(1)正如您所描述的:尝试一些东西并解决旧版本的异常。例如,您可以尝试导入json模块,并在失败时导入一个userland实现:

try:
    import json
except ImportError:
    import myutils.myjson as json

这是Django的一个例子(他们经常使用这种技术):

^{pr2}$

如果迭代器reversed可用,则使用它。否则,它们将从utils包导入自己的实现。在


(2)明确比较Python解释器的版本:

import sys
if sys.version_info < (2, 6, 0):
    # Do stuff for old version...
else:
    # Do 2.6+ stuff

sys.version_info是一个元组,可以很容易地与相似版本的元组进行比较。在

相关问题 更多 >