我正在开始一个新的python项目,主要针对可能在几年内升级到RHEL6的RHEL5机器。鉴于python 2.4是RHEL5的标准配置,并且系统管理员不会支持超过他们必须支持的内容,在我们的本地仓库中获取python 2.6将需要一些说服力。虽然看起来我可以通过python 2.4得到很好的结果,但我对于从头开始创建一个旨在与这样一个旧版本100%兼容的项目感到十分谨慎。
我应该争取在2.6中完成这个项目还是为了最顺利地遵守RHEL5?如果我坚持使用2.4,我应该注意哪些陷阱?
仅供参考:我肯定会使用sqlite和pygtk。
答案 0 :(得分:2)
答案 1 :(得分:2)
你最好的选择可能是坚持使用2.4,并拥有一个time_machine模块,其中包含了后来的蟒蛇所需的所有好东西。例如,当物业首次出现时,您必须执行以下操作:
def _get_prop(self):
return self._prop
def _set_prop(self, value):
self._prop = value
prop = property(_get_prop, _set_prop)
但在2.6中他们增强了属性也是装饰者本身,所以你可以写:
@property
def prop(self):
return self._prop
@prop.setter
def prop(self, value):
self._prop = value
这意味着在类的命名空间中挂起的冗余函数更少。
我碰巧喜欢这个功能,所以我的time_machine.py代码类似于:
# 2.6+ property for 2.5-
if sys.version_info[:2] < (2, 6):
# define our own property type
class property():
"2.6 properties for 2.5-"
def __init__(self, fget=None, fset=None, fdel=None, doc=None): ...
def __call__(self, func): ...
def __get__(self, obj, objtype=None): ...
def __set__(self, obj, value): ...
def __delete__(self, obj): ...
def setter(self, func): ...
def deleter(self, func): ...
关于这一点的非常好的部分是python等价物通常用于演示新功能,所以你甚至不必自己编写代码。
答案 2 :(得分:1)
2.5,2.6,2.7中的新内容。此外,标准库文档添加了某些功能。例如,string formatting was added in 2.6。第三方图书馆的支持可能很狡猾。
答案 3 :(得分:1)
我主要担心的是第三方库 - 大多数库作者将运行2.7并考虑3.X,因此任何只显示旧版本的错误可能会获得较低的优先级(或完全忽略 - 如果这个bug与python本身有关,作者很容易说这不是他们库的错误)
答案 4 :(得分:0)
自己很幸运 - 上次我做了真正的Python工作,我不得不瞄准Python 1.5.2,因为这是我们所针对的RHEL系统上最大的共同点。希望所有这些系统现在都已迁移到更新的工具。
可能会觉得过时,但这是当前的生态系统:要么让您的软件易于在目标客户中部署,要么让自己被忽略。业余爱好者部署非常简单,他们将全面运行更新的系统,但他们通常不会支付账单。