什么是“坏魔法数字”ImportError在python,我如何解决它?

我能在网上找到的唯一一件事表明,这是由编译一个.py -> .pyc文件引起的,然后试图使用错误版本的python。然而,在我的例子中,文件有时似乎导入得很好,但有时却不行,我不知道为什么。

python在回溯中提供的信息不是特别有用(这就是为什么我在这里问…),但如果它有帮助的话,它在这里:

Traceback (most recent call last):
  File "run.py", line 7, in <module>
    from Normalization import Normalizer

当前回答

这也可能是由于目录中缺少__init__.py文件。比如,如果你在Django中创建了一个新目录,用于将单元测试分离为多个文件,并将它们放在一个目录中,那么你还必须在新创建的测试目录中的所有其他文件旁边创建__init__.py文件。否则它会给出如下错误:

Traceback (most recent call last):
  File "C:\Users\USERNAME\AppData\Local\Programs\Python\Python35\Lib\unittest\loader.py",line 153, in loadTestsFromName
    module = __import__(module_name)
ImportError: bad magic number in 'APPNAME.tests': b'\x03\xf3\r\n'

其他回答

删除所有.pyc文件将修复“坏魔术数字”错误。

find . -name "*.pyc" -delete

加载一个python3生成的*。带有python2的Pyc文件也会导致此错误。

在我的例子中,它不是.pyc,而是我重命名自己的模块后的旧二进制.mo翻译文件,所以在这个模块文件夹中我必须运行

find . -name \*.po -execdir sh -c 'msgfmt "$0" -o `basename $0 .po`.mo' '{}' \;

(请先备份并修复.pyc文件)

所以我有同样的错误:ImportError坏魔术数字。这是windows 10上的

这个错误是因为我安装了mysql-connector

所以我不得不:

pip uninstall mysql-comnector
pip uninstall mysql-connector-python
pip install mysql-connector-python

这比上面的方法更有效。

find {directory-of-.pyc-files} -name "*.pyc" -print0 | xargs -0 rm -rf

{目录-。Pyc-files}是包含已编译的python文件的目录。