[pypy-dev] Help with "Exception: unexpected prebuilt constant"

Antonio Cuni anto.cuni at gmail.com
Fri Oct 9 10:46:18 CEST 2009


Hi Philip,

Philip Guo wrote:
> Sorry for another newbish question, but I'm having trouble getting PyPy 
> translated into C code.  I added some calls to open() throughout the 
> interpreter codebase (to log some info to files), but it failed 
> translation with the following error:
> 
>   [translation:ERROR]  Exception: unexpected prebuilt constant: 
> <built-in function open>
> 
> I then tried doing 'import os' and then using os.fdopen, but with the 
> same error:
> 
>   [translation:ERROR]  Exception: unexpected prebuilt constant: 
> <built-in function fdopen>

as you have noticed, neither os.open nor os.fdopen are supported by RPython.
The only low-level supported way to deal with files is using 
os.open/os.read/os.write.

However, you might want to have a look to rlib.streamio, that provides a 
higher level API to deal with files, offering features such as buffering, 
CR/LF conversions etc.  In particular, you can use 
streamio.open_file_as_stream to get a file like object similar to the builtin 
python ones.

> In general, what Python standard library calls can I make from my 
> modified PyPy code and still have it translate properly?  Specifically, 
> how do I read/write files from within PyPy?

see above :-)

ciao,
Anto



More information about the Pypy-dev mailing list