使用哪个版本的Python以获得最大兼容性

使用哪个版本的Python以获得最大兼容性

Which Version of Python to Use for Maximum Compatibility

如果我要使用Python启动一个开源项目,我应该使用哪个版本来确保绝大多数用户可以在其系统上使用它?

我是那种会迅速跳到下一个版本的人(当Python 3发行时我会做的),但是如果他们的当前版本似乎工作正常,许多人可能会更加保守。哪个版本会达到最佳效果,但仍然允许我享受最新,最酷的语言增强功能?


由于python处于向python 3过渡的阶段,具有向后兼容的特性,所以我认为仅使用python 3并不是一个好主意。根据时间轴,10月2.6 / 3.0之后的2.x系列至少会有一个或两个以下版本。

除了在目标平台上不提供python 3之外,要移植重要的外部python库并在python 3上可用还需要一些时间。

因此,正如马修(Matthew)建议保持在2.4 / 2.5并牢记向python 3过渡的计划是一个不错的选择。


一段时间以来,我还没有看到安装了2.3以下版本的系统。默认情况下,我现在使用的大多数OS默认都安装了2.4。 2.3仅在较旧的Solaris计算机上。 Linux发行版和OS X倾向于具有2.4。

IIRC 2.4具有很多2.5的功能,但仅可用于

1
from __future__ import *

Python 2.3或2.2,如果您可以不添加任何模块(例如datetime,csv,日志记录,optparse,zipimport),不使用SSL并愿意为True / False添加样板。铅>

2.4添加了装饰器。生成器表达式,reversed(),sorted()以及子进程和十进制模块。尽管它们都很不错,但是没有它们就可以编写Pythonic代码很容易(假设您的项目不会大量使用它们)。

2.5添加了相对导入,更好的64位支持和相当快的速度。您可以轻松地住所有这些人。

2.6尚未发布(尽管非常接近),因此尽管它可能吸引开发人员,但它并没有您想要的兼容性。

看看2.3、2.4、2.5和即将发布的2.6的发行说明(使用http://www.python.org/download/releases/2.Y/highlights/,其中" Y"是次要的版本)。

FWIW,对于SpamBayes,我们支持2.2及更高版本(2.2需要单独安装电子邮件软件包)。这并不过分,但添加2.3足够有用,而且2.3足够老,因此不久以后我们可能会放弃2.2。


您可以在每台计算机上使用不同版本的python。

编码新的东西,我不会使用python2.5以下的任何东西。您可以在股票debian稳定版上执行apt-get install python2.5

对于Windows,不必担心。安装python2.5 msi非常容易。

如果用户不愿意这样做,则可以使用py2exe部署可执行文件(非常简单),并使用inno setup构建安装程序(同样简单),那么它将像标准的Windows应用程序一样工作,并会使用其拥有自己的python dll,因此无需安装python。

就像彼得说的:记住要过渡到3.0,但不要在此基础上建立。


您应该使用Python 2.7,这是Python 2的最终主要版本。

Python 3.x当前具有有限的第三方库支持,并且默认情况下通常不安装。因此,您正在研究2.x系列。

Python 2.7本质上与早期的2.xs完全向后兼容。此外,它还可以针对在Python 3中无法使用的东西给出不赞成使用的警告。(特别是,它将维护单元测试,并对Unicode和字节字符串有一定的兴趣。)这些警告将迫使您执行以下操作:编写好的代码,自动化的2to3工具将能够将其转换为Python3。

Guido van Rossum正式建议维护单个Python 2代码库,并结合使用2to3和单元测试来生成适用于Python 2和3的兼容版本。(自编写PEP 3000以来,Python 2.6已被2.7取代。)


如果该项目将成为主流并且将在Linux上运行,那么明智的选择是2.4-仅仅是因为在Enterprise Linuxes上默认安装其他任何东西是很痛苦的。

在任何情况下,任何现代操作系统都将/可以具有2.4或更高版本。


推荐阅读

    linux中启动服务命令?

    linux中启动服务命令?,服务,系统,命令,信息,工作,设备,网络,标准,名称,密码,l

    linux系统光盘命令?

    linux系统光盘命令?,系统,工作,信息,数据,地址,命令,一致,名称,盘中,传播,如

    linux永久启动命令?

    linux永久启动命令?,系统,服务,密码,软件,工具,电脑,位置,环境,状态,发行,lin

    linux命令行启动软件?

    linux命令行启动软件?,系统,工具,软件,位置,密码,电脑,首页,代码,环境,地方,l

    linux系统ln命令?

    linux系统ln命令?,位置,信息,系统,名称,名字,发行,盘中,文件,链接,命令,如何

    linux系统as命令?

    linux系统as命令?,系统,信息,管理,设备,软件,地址,命令,工具,服务,基础,Linux

    linux系统监视器命令?

    linux系统监视器命令?,系统,情况,工具,信息,实时,电脑,平均,报告,管理,分析,

    linux查系统版本命令?

    linux查系统版本命令?,系统,信息,地址,名称,设备,命令,版本,电脑,软件,工具,

    linux系统添加命令?

    linux系统添加命令?,系统,密码,工作,简介,术语,地址,命令,文件,目录,用户,Lin

    海康linux系统命令?

    海康linux系统命令?,系统,工作,地址,管理,网络,标准,命令,海康,信息,工具,lin

    linux电脑系统命令?

    linux电脑系统命令?,系统,标准,地址,工作,电脑,命令,信息,设备,适当,目录,lin

    linux中启动软件命令?

    linux中启动软件命令?,环境,软件,电脑,系统,工具,位置,代码,设备,时间,情况,

    备份用命令linux系统?

    备份用命令linux系统?,系统,信息,设备,数据,软件,认证,命令,文件,备份,目录,L

    命令行添加linux启动?

    命令行添加linux启动?,系统,软件,工具,环境,初级,地址,发行,命令,目录,终端,l

    linux增加自启动命令?

    linux增加自启动命令?,服务,系统,信息,工具,软件,查询系统,状态,跨行,情况,

    linux系统中管道命令?

    linux系统中管道命令?,标准,系统,工作,命令,信息,通讯,管道,流向,连续,工具,L

    linux上启动脚本命令?

    linux上启动脚本命令?,服务,状态,系统,代码,脚本,工作,周期性,命令,文件,方

    linux系统命令记不住?

    linux系统命令记不住?,系统,工作,基础,地址,网络,服务,命令,第一,名称,目录,

    linux系统刻盘命令?

    linux系统刻盘命令?,系统,软件,设备,工具,盘中,电脑,数据,官网,信息,网络,请

    linux系统还原的命令?

    linux系统还原的命令?,系统,数据,工具,软件,地址,工作,情况,信息,命令,位置,