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

Philip Guo pg at cs.stanford.edu
Fri Oct 9 18:15:09 CEST 2009


Thanks for the informative reply, Antonio!  My (probably dumb) follow-up
question is: Is pickle (or cPickle) supported by RPython?  The bottom line
is that I need to serialize some data structures from my modified PyPy
interpreter to disk so that data can persist across successive interpreter
runs.  Pickling is the most obvious way to do so, but it requires a Python
built-in file object.

If pickling doesn't work, what other way of persisting data on disk do you
suggest?  (e.g., printing it to a file as plaintext and then eval-ing it
again?  does eval() even work in RPython?)


On Fri, Oct 9, 2009 at 1:46 AM, Antonio Cuni <anto.cuni at gmail.com> wrote:

> 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
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.python.org/pipermail/pypy-dev/attachments/20091009/1823d6c1/attachment.html>


More information about the Pypy-dev mailing list