homepage

This issue tracker has been migrated to GitHub , and is currently read-only.
For more information, see the GitHub FAQs in the Python's Developer Guide.

classification
Title: Importing script as module causes ImportError with pickle.load
Type: behavior Stage: resolved
Components: Library (Lib) Versions: Python 2.7
process
Status: closed Resolution: works for me
Dependencies: Superseder:
Assigned To: Nosy List: alexandre.vassalotti, flub, rj3d
Priority: normal Keywords:

Created on 2012年03月13日 19:40 by rj3d, last changed 2022年04月11日 14:57 by admin. This issue is now closed.

Messages (3)
msg155651 - (view) Author: Robert (rj3d) Date: 2012年03月13日 19:40
I implemented a data-structure as an object in a script, let's call it objectScript.py. I'm using this data-structure in other scripts like so:
from objectScript import data-structure
Populating this data-structure requires quite a bit of time, so when I'm done with it, I like to pickle it. However, if I try to load it from the pickled file, I get the following error:
ImportError: No module named objectScript
However, if I replace my 'from objectScript import data-structure' statement with the actual data-structure class definition from the objectScript.py file when I am pickling the object but then revert to the import statement when I am unpickling the object, everything works fine.
msg164825 - (view) Author: Floris Bruynooghe (flub) Date: 2012年07月07日 11:46
Hi, I think this is a usage error and if not you should try to provide a test case with both files for this.
Pickle needs to be able to import the module which contains the classes by the same name as the original module. That means pickling an instance of a class defined in a script will not work unless it is the same script which did the pickling. The object is probably pickled under the name __main__.YourClass and when you import it in another script it will be objectScript.YourClass, hence pickle is unable to find the class for the object you are trying to unpickle.
msg188286 - (view) Author: Alexandre Vassalotti (alexandre.vassalotti) * (Python committer) Date: 2013年05月03日 00:59
Without a test case, we cannot tell if this is a bug in pickle or not. Anyhow, Floris's explanation is pretty much on the dot as why you might see this error.
History
Date User Action Args
2022年04月11日 14:57:27adminsetgithub: 58498
2013年05月03日 00:59:44alexandre.vassalottisetstatus: open -> closed

nosy: + alexandre.vassalotti
messages: + msg188286

resolution: works for me
stage: resolved
2012年07月07日 11:46:46flubsetnosy: + flub
messages: + msg164825
2012年03月13日 19:40:40rj3dcreate

AltStyle によって変換されたページ (->オリジナル) /