Python pickle: ImportError: нет модуля с именем __main__

Привет, у меня есть две очень простые программы, которые запускаются на двух компьютерах. Какой мариновать и рассыпать класс.

На одном компьютере (с использованием 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__ 

Одна машина использует окна, другая – Linux, сценарий и рассол переносятся с использованием GIT (системы контроля версий). Я не могу понять, почему это происходит, поскольку класс определяется непосредственно в основном в обоих сценариях.

Проблема связана с окончанием строки. Обычно GIT автоматически конвертирует окончания строк из Windows в формат Linux, когда вы проверяете файлы. Однако, используя конфигурацию по умолчанию, он не делает этого для файлов pickle, и поэтому, когда вы читаете его на машине Windows, он не распознает строку заканчивается правильно.

Как только вы конвертируете окончание строки в соответствующий формат для ОС, рассол будет загружаться должным образом.

Я не уверен, почему Python сообщает об ошибке «ImportError: No module с именем __main__ », поскольку это очень запутанно.