您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

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

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中PPE3147的采用,不同Python版本的pyc文件将通过文件自动区分。使用不同的Python版本覆盖彼此的pyc文件,这应该可以解决大多数问题。

python 2022/1/1 18:48:19 有493人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶