您好我有两个非常简单的程序在两台计算机上运行。哪个泡菜和一个上课。
在一台计算机上(使用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中定义了类。
答案 0 :(得分:2)
问题是由于行结束。通常,当您检查文件时,GIT会自动将行结尾从Windows转换为Linux格式。但是,使用默认配置时,它不会对pickle文件执行此操作,因此当您在Windows计算机上读取它时,它无法识别该行结局得当。
将行结尾转换为操作系统的批准格式后,将正确加载pickle。
我不确定为什么Python报告“ImportError:没有名为__main__
的模块”作为错误,因为这非常令人困惑。