2017-08-12 61 views
0

所以在我制作的游戏中,我试图加载游戏所需的数据文件,以及当我用pickle加载文件时加载后,我反复检查)我得到这个错误:ImportError:没有名为__main__的模块(Python 2.7&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__ 

我看到这样的堆栈溢出的问题,但它不是我的情况有点不同,很抱歉,如果这是一个重复,我只是想弄明白。

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

回答

0

如果您在回购时发现,您有Deeper.pycDeeper.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这样就必须你为什么想:

(The file has been loaded, I've double-checked that.)

也许删除Deeper.pyc,做一个git-平分时看到的bug介绍(PS:检查你的工具栏。 dat,看起来好吗?还请检查你使用pickle.load的方式。也许你应该使用rb而不是r?)

相关问题