2

我的东西是在 Python 2.5.2 上开发和运行的

我想将一些代码移至 3.x,但这不可行,因为我使用的许多外部包还没有。(例如 numpy )。

因此,我将执行中间步骤并转到 2.6.2。

我的问题:如果一个外部模块在 2.5.2 上运行,但没有明确声明它适用于 2.6.x,我可以假设它会没事吗?或不?

4

4 回答 4

8

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

于 2009-08-28T14:00:20.857 回答
3

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

最简单的解决方案(恕我直言)是获取任何此类扩展的源并重新安装它们。在大多数平台上,对于大多数扩展,python setup.py install(可能使用 asudo或以管理员身份登录,具体取决于您的安装)都可以工作——您可能需要下载并安装适当的“开发人员”包,这再次取决于您的确切系统使用和您已经安装的内容(例如,在 Mac OS X 上,您需要安装 XCode——或者至少是其中的 gcc 子集,但安装它最简单——这反过来又需要您在以下位置免费注册Apple Developer Connection 并下载大型 XCode 包)。

我不确定此时这种方法在 Windows 上有多轻松——即,您是否可以使用免费的啤酒编译器,例如 mingw 或微软的“快速”版本的 VS,或者必须掏出$$ 到 MS 以获得正确的编译器。但是,大多数第三方扩展的开发人员确实会提供现成的 Windows 二进制文件,这正是因为让用户重新编译在 Windows 上是(或至少曾经是)麻烦,而且 2.6 已经得到第三方的广泛支持扩展维护者(毕竟这也只是对他们进行简单的重新编译;-),因此您可能很幸运,并找到了您使用的扩展所需的所有预编译二进制文件。

于 2009-08-28T15:28:33.960 回答
2

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

此外,不要费心再过一两年尝试迁移到 3.x。2.6 已经将许多 3.0 的功能向后移植到它,所以一旦你做到了,过渡就不会那么糟糕。

于 2009-08-28T14:01:47.203 回答
1

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

此外,该代码表明您可以进行更改,以便在读取包时更容易迁移到 3.x(例如区分 str 和 bytes,即使它们在 2.6 中是同义词)。

于 2009-08-28T14:44:03.710 回答