Python pickle:ImportError:没有名为__main__的模块

时间:2015-02-16 14:21:36

标签: python git pickle

您好我有两个非常简单的程序在两台计算机上运行。哪个泡菜和一个上课。

在一台计算机上(使用Linux):

import cPickle

# Define class
class test():
    def __init__():
        self.foo = 1

# Initialise and pickle class
bar = test()
with open("test.pkl", "wb") as file_:
    cPickle.dump(bar, file_, protocol=0)

在第二台计算机上(使用Windows):

import cPickle

# Define class again
class test():
    def __init__():
        self.foo = 1 

# Unpickle file
with open("test.pkl", "rb") as file_:
    bar = cPickle.dump(file_)

但是我收到了一个错误:

ImportError: No module named __main__

一台机器正在使用Windows,另一台正在使用Linux,并且正在使用GIT(版本控制系统)传输脚本和pickle。我无法理解为什么会发生这种情况,因为在两个脚本中直接在main中定义了类。

1 个答案:

答案 0 :(得分:2)

问题是由于行结束。通常,当您检查文件时,GIT会自动将行结尾从Windows转换为Linux格式。但是,使用默认配置时,它不会对pickle文件执行此操作,因此当您在Windows计算机上读取它时,它无法识别该行结局得当。

将行结尾转换为操作系统的批准格式后,将正确加载pickle。

我不确定为什么Python报告“ImportError:没有名为__main__的模块”作为错误,因为这非常令人困惑。