【问题标题】:ImportError: No module named __main__ (Python 2.7 & Pickle)ImportError:没有名为 __main__ 的模块(Python 2.7 和 Pickle)
【发布时间】:2017-08-12 01:56:32
【问题描述】:

所以在我正在制作的游戏中,我正在尝试加载游戏所需的数据文件,当我使用 pickle 加载文件时(文件已加载,我已经仔细检查过。)我收到此错误:

Traceback (most recent call last):
  File "/Users/user/Downloads/Deeper-master/Deeper.py", line 257, in <module>
    tutorialData = pickle.load(tutorialFile)
  File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/pickle.py", line 1384, in load
    return Unpickler(file).load()
  File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/pickle.py", line 864, in load
    dispatch[key](self)
  File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/pickle.py", line 1075, in load_inst
    klass = self.find_class(module, name)
  File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/pickle.py", line 1130, in find_class
    __import__(module)
ImportError: No module named __main__

我在 Stack Overflow 上看到过这样的问题,但它与我的情况有点不同,所以很抱歉,如果这是重复的,我只是想弄清楚。

你可以找到我的代码here。主脚本是 Deeper.py,只是为了节省时间。

【问题讨论】:

    标签: python python-2.7 pickle


    【解决方案1】:

    如果您在 repo 中注意到,您有一个 Deeper.pyc 和 Deeper.py。如果我运行Deeper.py,它会引发与您相同的异常。如果我运行Deeper.pyc,它会引发另一个异常:

    Traceback (most recent call last):
      File "Deeper.py", line 7, in <module>
        ToolbarTile = pygame.image.load("ToolbarTile.png")
    pygame.error: Couldn't open Toolbar Tile.png
    

    所以,代码(字节码,一些以前的版本)引用了ToolbarTile.png,但例外是关于Toolbar Tile.png(带空格)。所以我更改了文件名来解决这个问题。

    现在它提出了:

    Traceback (most recent call last):
      File "Deeper.py", line 766, in <module>
        else:
      File "Deeper.py", line 394, in __init__
        def displayCraft(self):
    pygame.error: Couldn't open options.png
    

    您的文件中有一个Options.png,但它会查找options.png(小写)(即使是您在 Deeper.py 中的新代码也会查找)。所以我改变了它。

    现在它可以工作了,虽然是 Deeper.pyc 所以这就是你想的原因:

    (文件已加载,我已经仔细检查过。)

    也许删除 Deeper.pyc 并执行 git-bisect 以查看何时引入错误(ps:检查您的工具栏.dat,您觉得还可以吗?还要检查您使用 pickle.load 的方式。也许您应该使用rb 而不是r?)

    【讨论】:

      猜你喜欢
      • 2017-06-04
      • 1970-01-01
      • 1970-01-01
      • 2014-04-15
      • 2015-10-27
      • 1970-01-01
      • 2018-07-02
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多