python中“坏魔法数”的重要性是什么,我该如何修复它?
我在网上唯一能找到的信息表明,这是由于编译了一个.py->;.pyc文件,然后试图将其与错误版本的python一起使用造成的。不过,在我的情况下,文件有时似乎导入得很好,但其他时候没有,我不知道为什么。
python在回溯中提供的信息并没有特别的帮助(这就是为什么我在这里问…),但在这里它是为了帮助:
Traceback (most recent call last):
File "run.py", line 7, in <module>
from Normalization import Normalizer
这个神奇的数字来自UNIX类型的系统,其中文件的前几个字节包含一个指示文件类型的标记。
Python在创建文件时将类似的标记放入其
pyc
文件中。然后,python解释器在加载时确保这个数字是正确的。
任何破坏这个魔法数字的东西都会引起你的问题。这包括编辑
pyc
文件,或者尝试从与解释器不同的python版本(通常更晚)运行pyc
。如果它们是您的
pyc
文件,只需删除它们并让解释器重新编译py
文件。在UNIX类型的系统上,这可能很简单,例如:或:
如果它们不是您的,您将必须获得重新编译的
py
文件,或者需要一个可以运行具有特定魔法值的pyc
文件的解释器。有一件事可能是导致间歇性的。导致问题的
pyc
只能在特定条件下导入。有时它不大可能进口。当导入失败时,您应该检查实际的完整堆栈跟踪吗?顺便说一下,我所有文件的第一个字是
2.5.1(r251:54863)
pyc
,2.6.1(r261:67517)
是62161
。所有神奇数字的列表都可以在Python/import.c
中找到,为了完整起见,在这里复制(在发布答案时是最新的,此后可能发生了变化):删除所有.pyc文件将修复“错误的幻数”错误。
使用python2加载python3生成的
*.pyc
文件也会导致此错误。相关问题 更多 >
编程相关推荐