从python2.7升级到3.0和ab的危险

2024-10-03 02:37:41 发布

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

我手下的一个人经常对我更新用Python2.5和2.7编写的程序到Python3.3有保留。我在bioninformatics工作,我尝试使用的很多python代码都是3.0之前的版本,虽然我有一个在虚拟机上运行2.7版本的linux,但在我的主机上,我已经在python3.3上使用它开发我的程序。我知道如果程序严重依赖库,那么可能会有一些兼容性问题,但除此之外,我不明白为什么我不能花一点时间升级它。我觉得我应该澄清的是,大多数程序都不比几百行代码多。在

我真正想知道的是;

两个版本之间是否存在一些真正的差异,可能导致程序运行不同?在

是否可以简单地更新到3.3版本并通过将print to print()或urlib2更改为update urlib来清理它?在


Tags: to代码程序版本程序运行linux时间update
3条回答

编写可以同时使用python2.6+和3.3+的新代码非常容易。在每个文件的开头使用以下内容

from __future__ import division, absolute_import \
        unicode_literals, print_function

然后了解它们之间的区别;可以使用^{}来简化移植。不过,请注意,许多需要的模块可能只为2.x编写(我怀疑在生物信息学领域比在一般编程领域更为如此),而且可能不仅仅是您的代码需要移植。我想你还需要2.x一段时间。我建议反对使用2to3,对我来说,正确的方法是开箱即用地编写既能在Python2.x和3.x上运行的代码,它简化了开发和测试。在

对于旧代码,请注意,str/unicode的混乱将多次对您造成严重影响—有些python2str应该是bytes,有些应该是python3str。在

顺便说一句:你熟悉2to3吗?在

对于这种Q+A格式来说,可能“出问题”的列表基本上太大了。Here is what the docs have to say关于移植代码。最重要的是要有好的笔试,但在学术界,我意识到这并不总是现实。作为替代,请参阅“gotchas”部分,以了解自动化不会/无法接收的最常见的问题。在

我在学术代码中看到最多的两个是依赖整数除法和以非二进制模式打开文件。在不知道具体情况的情况下,我会说要小心这些。在

我不知道问这个问题是否是最好的地方,但是这里的链接列出了python2.x和3.x之间的每一个区别:http://docs.python.org/3.0/whatsnew/3.0.html

读完后,你可以很容易地告诉你需要对你的2.x程序做些什么,使它们成为3.x版本

相关问题 更多 >