是什么导致.pyc变得“空”?

时间:2016-04-12 23:52:00

标签: python

什么会导致编译的python文件(.pyc)丢失其所有内容,但仍可导入?

现在我们的团队已经好几次,在频率,位置或范围上没有明显的模式。

我们看到的唯一一致性是:

  • 源文件(.py)已经连续几个月更改了 ,因此应该没有理由突然重新编译pyc。
  • 模块导入,但没有属性,方法,类等。在模块上运行dir()仅返回:['__builtins__', '__doc__', '__file__', '__name__', '__package__']
  • pyc的大小总是减少到1 KB

它似乎是编译空白.py文件的结果。但为什么呢?

更多细节:

  • 使用python 2.6+。
  • 虽然我们的某些软件包是通过网络加载到不同的解释器(某些特定于某个应用程序,例如Maya的mayapy),但我刚刚在某些本地文件,其中一个只有一个解释器才能启动。

因此,加载到不同的口译员可能会“冒险”;它肯定不是至少两个上述问题的原因。

- 我可以指出的另一件事是可能有问题,有时两个解释器实例可能同时运行(在不同的进程中)。即使这是问题(我不确定是这样),它会有解决方法吗?

1 个答案:

答案 0 :(得分:0)

在没有任何确凿证据的情况下,我们确定问题出在我们的文件服务器,还是某物。操作系统之间的日期戳可能不同吗?有事

我们现在通过设置 PYTHONDONTWRITEBYTECODE 环境变量来避免该问题,以防止首先生成pyc文件。

编辑:(为bugtracker找到@zhangyangyu的道具!)

另一方面,如果您日后要阅读此书,并且可以选择升级到最新版本的python 2.7,则此错误看起来像是identified back in Sept. 2015(该年晚些时候提交的补丁)-并于2018年11月合并。

该修复程序似乎包含在2.7.16中,该修复程序将于2019年初发布。