gpt4 book ai didi

python - 让 Python 忽略 .pyc 文件

转载 作者:IT老高 更新时间:2023-10-28 20:33:44 25 4
gpt4 key购买 nike

有没有办法让 Python 忽略任何存在的 .pyc 文件并始终直接解释所有代码(包括导入的模块)?谷歌没有找到任何答案,所以我怀疑没有,但似乎值得一问以防万一。

(我为什么要这样做?我有大量 Python 脚本,它们在几百台计算机的集群上重复运行。Python 脚本本身存在于共享的 NFS 文件系统上。不知何故,很少,在在几个小时内运行了数百次,它们会突然开始崩溃,并出现无法导入模块的错误。强制重新生成 .pyc 文件可以解决问题。当然,我想解决根本原因,但与此同时,我们还需要系统继续运行,因此如果可能的话,忽略 .pyc 文件似乎是一个合理的解决方法)。

附:我使用的是 Python 2.5,所以不能使用 -B。

最佳答案

可以使用标准 Python 库的 imp 模块重新实现 __builtins__.__import__ ,即import调用的钩子(Hook)函数和 from陈述。特别是 imp.load_module函数可用于加载 .py即使对应的.pyc存在。请务必仔细研究我所指向的页面中的所有文档,以及 import 的文档。 ,因为这是一项微妙的工作。文档本身建议改用导入钩子(Hook)(根据 PEP 302),但对于这个特定任务,我怀疑这会更难。

顺便说一句,您观察到的问题的可能原因包括尝试写入 .pyc 的不同计算机之间的竞争条件同时文件——NFS 锁定是出了名的不稳定,而且一直都是;-)。只要您使用的每个 Python 编译器都处于同一版本(如果不是,那么您无论如何都会遇到大麻烦;-),我宁愿预编译所有这些 .py文件到 .pyc并使他们的目录只读;无论如何,后者似乎是最简单的方法(而不是破解 __import__ ),即使由于某种原因您无法预编译。

关于python - 让 Python 忽略 .pyc 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3503970/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com