在Python2(.7.x)和Python3(.5.x)之间选择

在Python2(.7.x)和Python3(.5.x)之间选择,python,linux,scripting,Python,Linux,Scripting,我是一名Java开发人员,拥有超过10年的经验 几个月前,我开始使用python,当时我需要创建一个脚本,从REST服务提取数据,然后使用该数据生成报告。python是一种多用途语言(脚本、web应用程序、REST服务等),加上非常快的开发速度,这一事实激发了我对这种语言的浓厚兴趣。事实上,这是我在Linux世界中使用的唯一语言 目前,我正在尝试将我的(powershell/shell)自动化脚本移植到python中,该脚本是为完全自动化活塞的释放过程(一种基于Java的开源微门户技术)而开发的

我是一名
Java
开发人员,拥有超过10年的经验

几个月前,我开始使用
python
,当时我需要创建一个脚本,从REST服务提取数据,然后使用该数据生成报告。
python
是一种多用途语言(脚本、web应用程序、REST服务等),加上非常快的开发速度,这一事实激发了我对这种语言的浓厚兴趣。事实上,这是我在
Linux
世界中使用的唯一语言

目前,我正在尝试将我的
(powershell/shell)
自动化脚本移植到
python中,该脚本是为完全自动化活塞的释放过程(一种基于Java的开源微门户技术)而开发的。然而,摆在我面前的一个主要挑战是我应该使用
python
的哪个版本(2或3)?理想情况下,我更喜欢3,因为我相信这比版本2有很多改进,我想使用所有新开发的这个版本。然而,我担心的是可能有一些包可能还不是Python3的版本。这也是python.org网站上提到的-

但是,有一些关键问题可能需要您使用Python2而不是Python3

首先,如果您要部署到一个您无法控制的环境中,这可能会强制使用特定的版本,而不是允许您从可用的版本中自由选择。 其次,如果您想要使用一个特定的第三方软件包或实用程序,而该软件包或实用程序尚未发布与Python 3兼容的版本,并且移植该软件包是一项非常重要的任务,那么您可以选择使用Python 2来保留对该软件包的访问权

一个还不支持Python3的流行模块是Twist(用于网络和其他应用程序)。大多数积极维护的库都有人使用3.x支持。对于某些库来说,它比其他库更重要:例如,Twisted主要集中在生产服务器上,在生产服务器上支持Python的旧版本非常重要,更不用说支持包含对该语言进行重大更改的新版本了。(Twisted是一个主要包的主要例子,在这个包中,移植到3.x绝非易事。)


因此,我不希望出现这样的情况:有一个我认为对我的自动化脚本非常有用的包,但是没有一个用于
python
3的版本。

使用python 3。不支持Python3的包的数量每天都在减少,而且绝大多数大型/重要的框架已经同时支持这两种功能。甚至有一些项目已经完全放弃了Python2,尽管这些项目往往规模不大(因为企业惯性往往会阻碍项目)

今天在Python2上开始一个新项目,特别是作为一个初学者,比遇到一个不支持Python3的包更让人痛苦

考虑到python的多功能性和充满活力的python社区的规模,通常会有多个包来解决同一个问题。这意味着,即使您找到一个不支持python 3的项目,也可以找到一个支持python 3的类似项目


一旦您有足够的信心使用python 3,并且您遇到了一个只支持python 2的软件包,那么您就始终拥有源代码,并且可以开始重新提供补丁了!:D

我想请您从Python 3开始。您在3中编写的几乎所有内容都可以在2中编写,但反过来就不行了,现在大多数软件包都支持3,您将拥有其他Python软件包可能不支持的技能(例如异步io)。Python3还解决了以前版本中文本和二进制数据的问题(请阅读更多)

Python2(另请参见),因此向Python3的迁移尤为重要。

为什么不尝试确定您特别需要哪些软件包?您可以尝试为大多数脚本运行Python3,当您遇到需要3中尚未支持的包的问题时,您可以使用virtualenv??