在Django中出现ImportError: bad magic number in 'time': b'\x03\xf3\r\n'错误

51

我从GitHub下载了Django应用文件,在运行时遇到了这个错误。如何解决这个问题?


6
请删除您使用它下载的所有.pyc文件。 - Martijn Pieters
8个回答

74
请进入您的主目录。然后执行以下操作:<\p>
 sudo find . -name "*.pyc" -exec rm -f {} \;

10
“find . -type f -name "*.pyc" -delete” 这个命令的意思是在当前目录及其子目录中查找所有后缀为“.pyc”的文件,并将其删除。那么为什么需要使用“sudo”呢? 答案:使用“sudo”是为了获取管理员权限,因为有些文件只有管理员才有权限去删除,否则会出现“permission denied”(拒绝访问)的错误提示。 - Itachi
3
在您的主目录中不需要使用sudo。 - maxadamo

25

最终,我找到了答案。该项目有.pyc文件,其中包含了先前版本的信息和时间日期,导致了这个错误。删除这些文件后,我得到了正确的输出。


24
你可以删除文件夹中的所有 .pyc 文件来解决这个问题。
find . -name \*.pyc -delete 

sudo find . -name *.pyc -delete - Hans Ratzinger
1
@Hans,您不仅在命令中不必要地添加了sudo,而且还未能正确引用可能会扩展的参数。原始命令是正确的。 - penguin359

16
您的结账中包含.pyc文件。这些是字节缓存文件,存储缓存的字节码,以便Python避免解析和编译源文件。除非您计划在没有源文件的情况下分发项目,否则不应包括这些文件。
只需删除与.py文件位于同一目录中的所有.pyc文件。
错误消息中的“魔数”是存储的字节码的版本号,特定的Python版本仅适用于特定的字节码魔数;您的错误中的数字在十进制下等于62211(当解释为小端数字时),这显示.pyc文件是使用Python 2.7解释器创建的
Python 3.2切换到将.pyc文件存储在单独的__pycache__目录中,并在文件名中包含Python版本。但是,任何仍位于.py文件旁边的.pyc文件仍受支持,以允许仅使用字节码发布。可以安全地删除此类文件,因为如果您将来要使用Python 2.7解释器,则文件将被重新创建。

8
删除在您的目录中创建的 .pyc 文件。
例如:我有 gitlab.py 和 gitlab.pyc。后来,我将其重命名为 gitlab-api.py,但运行 python 文件时,它仍使用 gitlab.pyc。原因是:

Traceback (most recent call last): File "gitlab-api.py", line 1, in import gitlab ImportError: bad magic number in 'gitlab': b'\x03\xf3\r\n'

当我删除 gitlab.pyc 时,它就可以正常工作了。

4

你需要删除任何pyc文件。 Pyc是应用程序的缓存。删除所有以.pyc结尾的文件并重新运行应用程序。


2
如果您的操作系统是Windows,您需要删除Python的旧版本,然后就可以再次使用pip了。这是最好的方法,没有错误。

你也可以使用scoopNuGet更好地管理Windows上安装的软件,这样安装或卸载Python的过程将会显著改善。 - guychouk

1

重命名导入的类名或文件名,这样可以解决我的问题。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接