[Python-Dev] IDLE local scope cleanup (original) (raw)
Guido van Rossum guido@python.org
Wed, 13 Nov 2002 15:42:08 -0500
- Previous message: [Python-Dev] IDLE local scope cleanup
- Next message: [Python-Dev] Killing off bdist_dumb
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
Here is my real problem. I used to just pass a regular dictionary to code.InteractiveInterpreter, which worked well enough. But I just discovered an issue with pickling in the PyCrust shell, illustrated below:
Welcome To PyCrust 0.8 - The Flakiest Python Shell Sponsored by Orbtech - Your source for Python programming expertise. Python 2.2.2 (#1, Oct 28 2002, 17:22:19) [GCC 3.2 (Mandrake Linux 9.0 3.2-1mdk)] on linux2 Type "help", "copyright", "credits" or "license" for more information. >>> import pickle >>> def foo(): ... pass ... >>> pickle.dumps(foo) Traceback (most recent call last): File "", line 1, in ? File "/usr/local/lib/python2.2/pickle.py", line 978, in dumps Pickler(file, bin).dump(object) File "/usr/local/lib/python2.2/pickle.py", line 115, in dump self.save(object) File "/usr/local/lib/python2.2/pickle.py", line 225, in save f(self, object) File "/usr/local/lib/python2.2/pickle.py", line 519, in saveglobal raise PicklingError( PicklingError: Can't pickle <function foo at 0x8654b9c>: it's not found as main.foo >>> So I decided to switch to using sys.modules['main'].dict, which eliminated the pickling error, but introduced a bunch of clutter in the local namespace. Any suggestions?
Remove the clutter. This probably means having a very minimal "real" main program. IDLE does this by putting all the real code in the "run" module, and bootstrapping the subprocess as follows:
python -c "import('run').main()"
This is roughly equivalent to executing
import run run.main()
except that it doesn't create a variable 'run'.
--Guido van Rossum (home page: http://www.python.org/~guido/)
- Previous message: [Python-Dev] IDLE local scope cleanup
- Next message: [Python-Dev] Killing off bdist_dumb
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]