即使重新构建.pyc文件,仍然存在Bad magic number错误

7
当我运行我的Python 3脚本时,遇到了"Bad magic number"错误(当脚本尝试导入另一个模块时)。起初我以为是因为Python 2建立的.pyc文件。我删除了__pycache__目录并重新运行脚本,但解释器在导入该模块时仍然给我相同的错误。有什么想法吗?
更新:为了澄清,我应该提到,在脚本中的导入语句本身并不会导致错误。以下是堆栈跟踪:
Traceback (most recent call last):
  File "../mvc/test.py", line 6, in <module>
    from property import Property
  File "/home/mostafa/python/mvc/property.py", line 1, in <module>
    from owned import owned
  File "/home/mostafa/python/owned/__init__.py", line 1, in <module>
    from list import OwnedList
ImportError: Bad magic number in /home/mostafa/python/list.pyc

一个类似于你的问题:https://dev59.com/uHRB5IYBdhLWcg3wyqAd。你是否检查过导入模块时是否依赖于其他模块或__builtins__? - Vijay
我已经查看了那个问题。我的脚本只有两个import:一个是sys(因为它放在另一个import之前,所以它可以正常工作),另一个是导致错误的另一个模块。 - Elektito
也许尝试运行 python -v script.py-v 标志将导致 Python 在加载模块时打印出所有导入的内容。这可能会提供有关问题发生位置的线索。 - unutbu
2
你尝试过删除/home/mostafa/python/list.pyc吗?假设你有'list.py',python3会生成一个新的list.pyc。 - unutbu
当我运行“python3 -v test.py”时,我得到了这个。我不能说我看到了任何有用的东西,但也许我漏掉了什么。 - Elektito
@unutbu 就是这样。恐怕我没有仔细阅读堆栈跟踪。我期望.pyc文件在“owned”目录中,忘记了Python路径中存在旧版本的list.pyc。谢谢。也许你想把这个作为答案发布,这样我就可以接受它了。 - Elektito
1个回答

12

堆栈跟踪的最后一行显示导致错误的 pyc 文件的路径:

ImportError: Bad magic number in /home/mostafa/python/list.pyc

假设您的 PYTHONPATH 中有 list.py,则可以删除 /home/mostafa/python/list.pyc。当您导入 list 时,Python3 将根据 list.py 生成新版本的 list.pyc


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