Python 2.5 .pyc文件与Python 2.6 .pyc文件兼容吗?

Python 2.5 .pyc文件与Python 2.6 .pyc文件兼容吗?,第1张

Python 2.5 .pyc文件与Python 2.6 .pyc文件兼容吗?

通常,

.pyc
文件特定于一个Python版本(尽管它们运行相同的版本,但可以跨不同的机器体系结构移植);这些文件的标头中包含有关Python版本的信息-
因此,如果将相应
.py
文件放在文件的旁边
.pyc
,则
.pyc
每次使用其他Python版本导入这些模块时,都会重新构建。
.pyc
我从未听说过“尝试运行”错误版本的文件。涉及什么架构?
.py
文件是否在应有的位置?

编辑 :正如OP澄清的那样,当他在相同文件(来自两个不同的服务器,共享一个网络驱动器)上的相同文件中同时运行Python 2.4
Python 2.5程序时

.py
,崩溃就来了,崩溃的解释变得很容易。该
.py
文件都被重新编译的时间-由2.4
Python的当2.5一直是一个最近运行它们,反之亦然-
因此
.pyc
文件是疯狂地忙于改写所有的时间。众所周知,很难在网络驱动器上正确锁定文件(尤其是但不限于跨不同的 *** 作系统)。因此,必须发生以下情况(可以切换角色):2.4服务器刚刚确定
.pyc
文件适合它,并开始阅读它;在2.5服务器(之前确定已需要重新编译该模块)之前,它已经完成了读取;因此2.4服务器最终以一个内存缓冲区结束,该缓冲区具有(例如)2.4版本的前4K字节和2.5版本的后4K字节。毫无疑问,当它
使用 该损坏的缓冲区时,就会 崩溃

如果您发现自己不断尝试

.py
从两个或多个不同版本的Python(即使是在同一服务器上,而没有网络驱动器的复杂性)运行两个或多个不同版本的文件,则可能是一个真正的问题。“适当的”解决方案将类似于virtualenv。在(简单,但脏-
ISH)黑客我们在工作中通过(在很多年前,但它仍然在生产......!)是对Python的每个版本补丁生产和使用不同的扩展用于其编译的字节码文件:
.pyc
(或
.pyo
)(适用于Python)
1.5.2
(对于我们来说,这是我们开始对较新版本进行合并时最稳定的“系统”版本),
.pyc-2.0
适用于2.0,
.pyc-2.2
适用于2.2,依此类推(或等效)
.pyo-X.Y
当然)。我听说这很快就会消失了(谢谢托马斯!!),但这确实使我们好多年都在解决这个棘手的问题。

如果您的系统可行,那么一种更简单的解决方案是保留一个Python版本。如果您的系统有任何复杂性,使其无法拥有一个单独的Python版本(就像我们所做的那样,那么确实如此),那么这些天我会衷心推荐

virtualenv
,我已经提到过。


随着Python 3.2中PPE
3147的采用,不同Python版本的pyc文件将通过文件名自动区分。使用不同的Python版本覆盖彼此的pyc文件,这应该可以解决大多数问题。



欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5666799.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-16
下一篇 2022-12-16

发表评论

登录后才能评论

评论列表(0条)

保存