[Python-Dev] Improve Python for embedding (original) (raw)
Thomas Heller theller at python.net
Mon Dec 22 14:55:38 EST 2003
- Previous message: [Python-Dev] Improve Python for embedding
- Next message: [Python-Dev] Improve Python for embedding
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
[Thomas Heller]
I find the current situation when 'embedding' Python rather unsatisfying.
[Guido van Rossum]
I'm interested in improve it. Can you explain what exactly your 'embedding' requirements are?
see below.
1. Careful preparation (hacking?) of environment variables is needed to avoid that PyInitialize() takes the default actions needed for the standard Python interpreter (for example, to avoid the default sys.path). I guess it depends on the embedding needs. Some embedded uses would be quite happy with the default sys.path.
Sure, but others not.
Possible improvements I currently can think of are:
- Provide a function like PyInitializeEx(), which accepts parameters specifying an initial sys.path, optimize flag, verbose flag, and so on. Except for sys.path, you can set most flags directly before calling PyInitialize(), so I'm not sure if there's a need to pass these into PyInitialize().
I want to specify the Python path before calling Py_Initialize(), and I don't want it to use any environment variables which (again) set the flags. So I thought of Py_InitializeEx() which would take parameters specifying these things, and Py_Initialize() could be changed to call Py_InitializeEx(NULL), maybe.
2. A suggestion from /F on c.l.p was to change pythonw.exe so that instead of hiding all output to stderr a console window would be opened to show the tracebacks. This requires to construct an object with a 'write' method doing all this magic, and it must be done after the call to PyInitialize() and before PyRunSimpleFile(). Now, looking at the code of PyMain(), it seems impossible without rewriting most of the code. I'm not sure what this has to do with embedding -- can you clarify?
The Python interpreter (dll) embedded into pythonw.exe ;-)
- Split PyMain() into 2 functions PyMainPrepare() and PyMainRun(), or let PyMain() accept a callback function which will be called jsut after PyInitialize() has been run. OK, now I'm confused. If you're embedding Python, why would you be using PyMain() at all?
I'm probably not good at explaining these things.
I was thinking of pythonw.exe (WinMain.c). I want to create a Python object (an stderr writer), and assign this to sys.stderr, without changing too much code.
Does it make more sense now?
Thomas
- Previous message: [Python-Dev] Improve Python for embedding
- Next message: [Python-Dev] Improve Python for embedding
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]