2009-08-28 81 views
2

我的东西,开发和关于Python 2.5.2运行移动到Python 2.6.x的

我想移动一些代码到3.x,但是这是不可行的,因为这么多我使用外部包还没有。 (比如numpy)。

所以,我会做中间步骤并转到2.6.2。

我的问题:如果一个外部模块在2.5.2上运行,但没有明确说明它与2.6.x一起工作,我可以认为它会好吗?或不?

+3

我想你可以试试看? – SilentGhost 2009-08-28 13:59:03

+0

你应该没问题。当我切换到2.6时,我没有遇到任何严重的问题。 – 2009-08-28 14:15:01

回答

8

他们很可能会工作得很好。有些事情可能会导致DeprecationWarnings,例如sha模块,但它们可以安全地忽略。这是我的直觉,当然你可以碰到一些导致问题的具体事情。无论如何,咋一看对这些应该告诉相当快的代码是否需要工作与否:

+0

只是在2.6下测试了30,000行应用程序。工作很好。异常处理中的一个小问题(不推荐使用.message属性)吸引了我。 – 2009-08-28 20:57:28

2

你不能假设。但是,您应该能够轻松测试它是否有效。

另外,不要打扰试图移动到3.x一年或两年。 2.6已经将3.0的许多功能移植到了它,所以一旦你做到了,转换就不会那么糟糕。

1

可能值得阅读2.6文档中的What's New部分。虽然2.6被设计为向后兼容,但有一些变化可能会捕获代码,特定的代码会做一些奇怪的事情(例如:hasattr()用于吞下所有错误,现在它吞噬除SystemExitKeyboardInterrupt之外的所有错误;不是大多数人会注意到,但可能会有奇怪的代码,它会有所作为)。

此外,该代码还指出了您可以进行的更改,以便在读取包时(例如,即使它们在2.6中是同义词时区分str和字节),也可以更轻松地移至3.x。

3

主要问题将随您可能使用的任何C编码扩展一起提供:取决于您的系统,但尤其是在Windows上,编译为2.5的此类扩展可能根本无法工作(或至少不会安静地和可靠)与2.6。这与过去从2.4迁移到2.5时没有什么不同。

最简单的解决方案(恕我直言)是获得任何这样的扩展的来源,并重新安装它们。在大多数平台上,对于大多数扩展,python setup.py install(可能带有sudo或以管理员身份登录,具体取决于您的安装)都可以使用 - 您可能需要下载并安装适当的“开发人员”软件包,这取决于您的系统(例如,在Mac OS X上,您需要安装XCode - 或者至少是其中的gcc子集,但最简单的方法就是安装它 - 这又要求您注册在Apple Developer Connection免费下载大型XCode软件包)。

我不确定此时此方法在Windows上是多么的无忧无虑 - 也就是说,您是否可以使用免费的啤酒编译器,如mingw或微软的VS的“express”版本,或者必须向MS发出$$才能获得正确的编译器。但是,大多数第三方扩展的开发人员都在努力提供准备好的Windows二进制文件,这完全是因为用户重新编译在Windows上(或者至少曾经是)在Windows上很麻烦,2。6已经得到了第三方扩展维护者的广泛支持(因为毕竟它只是简单地重新编译它们;-),所以你可能会很幸运,并找到所有你需要的预编译的二进制文件使用。