pickle не может импортировать модуль, который существует?

Почему это может произойти?

import window; print "LOADED"; data = cPickle.loads(data) 

Результат:

 LOADED Traceback (most recent call last): ... import window; print "LOADED"; data = cPickle.loads(data) exceptions.ImportError: No module named window 

Он загружает модуль отлично, если я делаю import window , но при загрузке cPickle он не работает.

Для некоторой дополнительной информации, которая, вероятно, актуальна:

Модуль, в котором я сохранил файл, находится в файле project1\MODULE\submodule\main.py Модуль windowproject1\MODULE\window.py . main.py начинается:

 import sys sys.path.append("..\\..") sys.path.append("..") ... import window 

Модуль, который я пытаюсь загрузить, находится в project2\project2sub\MODULE\data.py , не project2\project2sub\MODULE\data.py в путь с помощью пути sys .

MODULE одинаково в обоих случаях: модуль, который я хочу загрузить, – project2\project2sub\MODULE\window.py .

Может ли sys.path приложить это как-то?

2 Solutions collect form web for “pickle не может импортировать модуль, который существует?”

Убедитесь, что вы импортируете классы в программу загрузки так же, как и в программе сохранения .

Сохранение:

  import window myObj.window_obj = window.wObj 

загрузка

  import window myObj = cPickle.loads(data) 

НЕ:

Сохранение:

  from window import wObj myObj.window_obj = wObj 

Загрузка:

  import window myObj = cPickle.loads(data) 

Рассол зависит от пути модуля. Независимо от того, как вы загружаете модули, если вы не sys.path с sys.path , работа с рассолом и экономия должны работать. Однако, если вы import module.foo в одном месте и sys.path.append('module'); import foo sys.path.append('module'); import foo , у вас есть два разных пути к модулю: в первом случае путь модуля – module.foo а во втором – просто foo . Они не эквивалентны, и это предотвратит правильную работу рассола.

  • Как сохранить patsy DesignInfo?
  • Сохранять пользовательские атрибуты при подгонке подкласса массива numpy
  • Сохранение Python Маринованные объекты в MySQL db
  • Pickle не может хранить объект в кэше логарифма django во время тестов?
  • Ошибка травления питона: TypeError: объект pickle не возвращает список. Проблема с numpy?
  • Как мне выбрать словарь, содержащий модуль и класс?
  • Сохранение вида numpy при травлении
  • Объекты Pickle Queue в python
  • Python - лучший язык программирования в мире.