On Wed, Jul 27, 2016 at 7:45 PM, Jason Benjamin <hexusne...@gmail.com> wrote: > Look at this: https://wiki.python.org/moin/UsingPickle > It uses *pickle.dump* not *pickle.dumps*
Yes that uses a file. I do not want to use a file. I want to pass the object as a string. > If you still don't get it send me the code for the function with a working > code example the calls that function revealing the error. > > I've had a lot of experience with Python and it looks like its the sequence > of functions that causes the problem and not just one Python function call > on its own. I have an object of type Target: (Pdb) type(target) <class 'workitem.Target'> And I pickle it like this: (Pdb) type(pickle.dumps(target)) <type 'str'> And then it looks like this: (Pdb) pickle.dumps(target) "ccopy_reg\n_reconstructor\np0\n(cworkitem\nTarget\np1\nc__builtin__\nobject\np2\nNtp3\nRp4\n(dp5\nS'histologySections'\np6\n(lp7\nsS'registrationTransforms'\np8\nV\np9\nsS'valueMaps'\np10\n(dp11\nsS'targetID'\np12\nVRight-CarotidArtery\np13\nsS'targetInitializer'\np14\ng9\nsS'regions'\np15\n(dp16\nsS'bodySite'\np17\nVRightCarotid\np18\nsS'targetLocalFolderName'\np19\nV21597135/wi-54976537/Right-CarotidArtery\np20\nsS'readingsLocalFileName'\np21\ng9\nsS'probabilityMaps'\np22\n(dp23\nsS'targetPath'\np24\ng9\nsb." And I pass it into a subprocess.Popen call. Then in the program that is called, it comes in as a string: (Pdb) type(args.target) <type 'str'> With the same content: (Pdb) args.target "ccopy_reg\n_reconstructor\np0\n(cworkitem\nTarget\np1\nc__builtin__\nobject\np2\nNtp3\nRp4\n(dp5\nS'histologySections'\np6\n(lp7\nsS'registrationTransforms'\np8\nV\np9\nsS'valueMaps'\np10\n(dp11\nsS'targetID'\np12\nVRight-CarotidArtery\np13\nsS'targetInitializer'\np14\ng9\nsS'regions'\np15\n(dp16\nsS'bodySite'\np17\nVRightCarotid\np18\nsS'targetLocalFolderName'\np19\nV21597135/wi-54976537/Right-CarotidArtery\np20\nsS'readingsLocalFileName'\np21\ng9\nsS'probabilityMaps'\np22\n(dp23\nsS'targetPath'\np24\ng9\nsb." And when I unpickle it I get the error: (Pdb) pickle.loads(args.target) ***ImportError: Import by filename is not supported. Also, please keep the discussion on the list, and please don't top post. > > > > On Wed, Jul 27, 2016 at 4:29 PM, Larry Martell <larry.mart...@gmail.com> > wrote: > > On Wed, Jul 27, 2016 at 6:54 PM, Jason Benjamin <hexusne...@gmail.com> > wrote: > > If it has and 's' on the end it will only work on strings. *dumps* refers to > a string too. > > Yes, I know. I have an object, which I pickle with dumps, which turns it > into a string. Then I try to unpickle it with loads and I get that error. > (Pdb) type(args.target) <type 'str'> (Pdb) pickle.loads(args.target) *** > ImportError: Import by filename is not supported. > > On Wed, Jul 27, 2016 at 3:44 PM, Larry Martell <larry.mart...@gmail.com> > wrote: On Wednesday, July 27, 2016, Jason Benjamin <hexusne...@gmail.com> > wrote: > > On Wed, 27 Jul 2016 17:25:43 -0400, Larry Martell wrote: > When I try and > unpickle an object with pickle.loads it fails with: > > ImportError: Import > by filename is not supported when unpickleing > > I've never used pickle > before. Why do I get this and how can I fix it? Try using *pickle.load* > instead of *pickle.loads*. pickle.loads is for strings. Retrieved from > documentation: help(pickle) after importing pickle. > > I am unpickling a string created with pickle.dumps -- https://mail.python.org/mailman/listinfo/python-list