[Python-bugs-list] [ python-Bugs-505490 ] Improve I/O redirection to embedding app

noreply@sourceforge.net noreply@sourceforge.net
Fri, 18 Jan 2002 13:26:22 -0800


Bugs item #505490, was opened at 2002-01-18 11:00
You can respond by visiting: 
http://sourceforge.net/tracker/?func=detail&atid=105470&aid=505490&group_id=5470

Category: Extension Modules
Group: Feature Request
Status: Open
Resolution: None
Priority: 5
Submitted By: Stefan Franke (sfranke)
Assigned to: Nobody/Anonymous (nobody)
Summary: Improve I/O redirection to embedding app

Initial Comment:
When embedding Python into an existing application, you
usually do two things (among others):
1. Make Python use your own memory allocation
2. Redirect its I/O to the embedding app

While the former is very easy due to the excellent
pymem.h interface, the latter is quite painful, since
the interpreter uses stdin/out/err directly.

The common workaround I found on c.l.p is providing
your own file-like objects in an extension module and
assign them to sys.stdout/err within the interpreter.
This solution still has its problems (like getting
errors while import site.py)

I wish Python would encapsulate I/O in a similar way
than its malloc interface, and in some way I would
expect this from a language which is said to be 
designed for extending and embedding.

Unluckily I'm not able to this myself. I started my 
first embedding project a few days ago and still miss
the big picture about Python's C API.


----------------------------------------------------------------------

>Comment By: Martin v. Löwis (loewis)
Date: 2002-01-18 13:26

Message:
Logged In: YES 
user_id=21627

I don't think that assigning to sys.stdout etc. is a
work-around; it is the proper solution. If you worry about
site.py, you can set Py_NoSiteFlag (which may be a good idea
in an embedded interpreter, anyway); if you then still need
site.py, you can import it on your own.

----------------------------------------------------------------------

You can respond by visiting: 
http://sourceforge.net/tracker/?func=detail&atid=105470&aid=505490&group_id=5470