首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在你的代码中支持多个Python版本?

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

Stack Overflow用户
提问于 2009-10-07 15:48:29
回答 3查看 3.5K关注 0票数 11

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

到目前为止,搜索Google和Stack Overflow都没有找到任何结果。我觉得在此之前,我已经看到import语句周围的try/except块实现了类似的功能,但找不到任何示例。是否有一个普遍接受的最佳实践来支持多个Python版本?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2009-10-07 15:55:21

有两种方法可以完成此操作:

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

代码语言:javascript
复制
try:
    import json
except ImportError:
    import myutils.myjson as json

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

代码语言:javascript
复制
try:
    reversed
except NameError:
    from django.utils.itercompat import reversed     # Python 2.3 fallback

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

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

代码语言:javascript
复制
import sys
if sys.version_info < (2, 6, 0):
    # Do stuff for old version...
else:
    # Do 2.6+ stuff

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

票数 12
EN

Stack Overflow用户

发布于 2009-10-07 15:54:00

你当然可以做到

代码语言:javascript
复制
try:
  import v26
except ImportError:
  import v25

Dive Into Python—Using Exceptions for Other Purposes

票数 4
EN

Stack Overflow用户

发布于 2012-02-24 00:43:32

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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1532488

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档