The following constructs are not supported by Psyco. It does not mean that code containing them will fail; it merely means that any function using them cannot be compiled, and will thus be entierely run by the standard interpreter.
exec
statement -- in some cases you can use eval and/or compile instead, under the restrictions described in section A.2
Log files report unsupported constructs by giving the corresponding bytecode instruction number, which you can look up in the following table:
Bytecode | Instruction name | Appears in |
---|---|---|
82 |
LOAD_LOCALS |
class definitions |
84 |
IMPORT_STAR |
from xx import * |
85 |
EXEC_STMT |
exec xx |
86 |
YIELD_VALUE |
generators |
90 |
STORE_NAME |
(1) |
91 |
DELETE_NAME |
(1) |
101 |
LOAD_NAME |
(1) |
134 |
MAKE_CLOSURE |
nested scopes |
135 |
LOAD_CLOSURE |
nested scopes |
136 |
LOAD_DEREF |
nested scopes |
137 |
STORE_DEREF |
nested scopes |
(1): these appear outside functions, like at the module top-level or in the body defining a class. They can sometimes appear in a function too, e.g. when the function uses from xx import *
or exec xx
.
def
statements)