Voglio compilare un codice Python usando il traduttore rpython di pypy. Un giocattolo semplice esempio che non fa nulla:Come inizializzare un set() nel codice per essere compilato come rpython di pypy?
def main(argv):
a = []
b = set(a)
print b
return 0
def target(driver,args):
return main,None
Se compilo come:
python2.6 ~/Downloads/pypy-1.4.1-src/pypy/translator/goal/translate.py --output trypy trypy.py
non si compila, piuttosto appena si ferma con gli errori di qualcosa di simile:
[translation:ERROR] AttributeError': 'FrozenDesc' object has no attribute 'rowkey'
[translation:ERROR] .. v1 = simple_call((type set), v0)
[translation:ERROR] .. '(trypy:3)main'
[translation:ERROR] Processing block:
[translation:ERROR] [email protected] is a <class 'pypy.objspace.flow.flowcontext.SpamBlock'>
[translation:ERROR] in (trypy:3)main
[translation:ERROR] containing the following operations:
[translation:ERROR] v0 = newlist()
[translation:ERROR] v1 = simple_call((type set), v0)
[translation:ERROR] v2 = str(v1)
[translation:ERROR] v3 = simple_call((function rpython_print_item), v2)
[translation:ERROR] v4 = simple_call((function rpython_print_newline))
[translation:ERROR] --end--
Se tolgo la funzione set(), funziona. Come usi gli insiemi in rpython?
Sembra essere un problema con PyPy, non il tuo codice. – orlp
Hai provato 'b = set()'? Quindi 'b.add (x)' se necessario? – TryPyPy
Quindi, sembra che uno non usi gli insiemi in RPython ... Buone vecchie dicts dovrebbero fare il trucco, giusto? – TryPyPy