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 . Они не эквивалентны, и это предотвратит правильную работу рассола.

  • Передача рассола между Python и IronPython
  • Python: ошибки при сохранении и загрузке объектов с помощью модуля рассола
  • Как распиливать словарь python в MySQL?
  • пинок picon UnicodeDecodeError
  • Python: Pickle и Qt (PyQT)
  • Почему модуль shelve на python иногда создает файлы с разными расширениями?
  • Как разместить мой набор данных в файле .pkl в точном формате и структуре данных, используемой в «mnist.pkl.gz»?
  • Сочетание несовместимости массивов numpy между Python 2 и 3
  • Сохранение Python Маринованные объекты в MySQL db
  • Использование pickle.dump - TypeError: должно быть str, а не байтами
  • Портирование пиреней py2 в py3 строки становится байтами
  • Python - лучший язык программирования в мире.