## org.python.util
Class PythonInterpreter

    java.lang.Object
      org.python.util.PythonInterpreter

Direct Known Subclasses:
  InteractiveInterpreter

    public class PythonInterpreter

extends Object

The PythonInterpreter class is a standard wrapper for a Jython interpreter for embedding in a Java application.

Constructor Summary
`PythonInterpreter()` Creates a new interpreter with an empty local namespace.
`PythonInterpreter(PyObject dict)` Creates a new interpreter with a specified local namespace.
`PythonInterpreter(PyObject dict, PySystemState systemState)`

Method Summary
`void` `cleanup()`
`PyCode` `compile(Reader reader)`
`PyCode` `compile(Reader reader, String filename)`
`PyCode` `compile(String script)` Compiles a string of Python source as either an expression (if possible) or a module.
`PyCode` `compile(String script, String filename)`
`PyObject` `eval(PyObject code)` Evaluates a Python code object and returns the result.
`PyObject` `eval(String s)` Evaluates a string as a Python expression and returns the result.
`void` `exec(PyObject code)` Executes a Python code object in the local namespace.
`void` `exec(String s)` Executes a string of Python source in the local namespace.
`void` `execfile(InputStream s)`
`void` `execfile(InputStream s, String name)`
`void` `execfile(String filename)` Executes a file of Python source in the local namespace.
`PyObject` `get(String name)` Returns the value of a variable in the local namespace.

`

`<T> T`

`

`get(String name, Class<T> javaclass)`
Returns the value of a variable in the local namespace.

`PyObject` `getLocals()`
`PySystemState` `getSystemState()`
`static void` `initialize(Properties preProperties, Properties postProperties, String[] argv)` Initializes the Jython runtime.
`void` `set(String name, Object value)` Sets a variable in the local namespace.
`void` `set(String name, PyObject value)` Sets a variable in the local namespace.
`void` `setErr(OutputStream outStream)`
`void` `setErr(PyObject outStream)`
`void` `setErr(Writer outStream)`
`void` `setIn(InputStream inStream)` Sets a java.io.InputStream to use for the standard input stream.
`void` `setIn(PyObject inStream)` Sets a Python object to use for the standard input stream.
`void` `setIn(Reader inStream)`
`void` `setLocals(PyObject d)`
`void` `setOut(OutputStream outStream)` Sets a java.io.OutputStream to use for the standard output stream.
`void` `setOut(PyObject outStream)` Sets a Python object to use for the standard output stream.
`void` `setOut(Writer outStream)`
`static PythonInterpreter` `threadLocalStateInterpreter(PyObject dict)` Creates a new interpreter with the ability to maintain a separate local namespace for each thread (set by invoking setLocals()).

Methods inherited from class java.lang.Object
`equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

Constructor Detail

### PythonInterpreter

    public PythonInterpreter()

  Creates a new interpreter with an empty local namespace.

### PythonInterpreter

    public PythonInterpreter(PyObject dict)

  Creates a new interpreter with a specified local namespace.

  Parameters:
    `dict` - a Python mapping object (e.g., a dictionary) for use as the namespace

### PythonInterpreter

    public PythonInterpreter(PyObject dict,
                             PySystemState systemState)

Method Detail

### initialize

    public static void initialize(Properties preProperties,
                                  Properties postProperties,
                                  String[] argv)

  Initializes the Jython runtime. This should only be called once, before any other Python objects (including PythonInterpreter) are created.

  Parameters:
    `preProperties` - A set of properties. Typically System.getProperties() is used. preProperties override properties from the registry file.
    `postProperties` - Another set of properties. Values like python.home, python.path and all other values from the registry files can be added to this property set. postProperties override system properties and registry properties.
    `argv` - Command line arguments, assigned to sys.argv.

### threadLocalStateInterpreter

    public static PythonInterpreter threadLocalStateInterpreter(PyObject dict)

  Creates a new interpreter with the ability to maintain a separate local namespace for each thread (set by invoking setLocals()).

  Parameters:
    `dict` - a Python mapping object (e.g., a dictionary) for use as the default namespace

### getSystemState

    public PySystemState getSystemState()

### setIn

    public void setIn(PyObject inStream)

  Sets a Python object to use for the standard input stream.

  Parameters:
    `inStream` - a Python file-like object to use as input stream

### setIn

    public void setIn(Reader inStream)

### setIn

    public void setIn(InputStream inStream)

  Sets a java.io.InputStream to use for the standard input stream.

  Parameters:
    `inStream` - InputStream to use as input stream

### setOut

    public void setOut(PyObject outStream)

  Sets a Python object to use for the standard output stream.

  Parameters:
    `outStream` - Python file-like object to use as output stream

### setOut

    public void setOut(Writer outStream)

### setOut

    public void setOut(OutputStream outStream)

  Sets a java.io.OutputStream to use for the standard output stream.

  Parameters:
    `outStream` - OutputStream to use as output stream

### setErr

    public void setErr(PyObject outStream)

### setErr

    public void setErr(Writer outStream)

### setErr

    public void setErr(OutputStream outStream)

### eval

    public PyObject eval(String s)

  Evaluates a string as a Python expression and returns the result.

### eval

    public PyObject eval(PyObject code)

  Evaluates a Python code object and returns the result.

### exec

    public void exec(String s)

  Executes a string of Python source in the local namespace.

### exec

    public void exec(PyObject code)

  Executes a Python code object in the local namespace.

### execfile

    public void execfile(String filename)

  Executes a file of Python source in the local namespace.

### execfile

    public void execfile(InputStream s)

### execfile

    public void execfile(InputStream s,
                         String name)

### compile

    public PyCode compile(String script)

  Compiles a string of Python source as either an expression (if possible) or a module. Designed for use by a JSR 223 implementation: "the Scripting API does not distinguish between scripts which return values and those which do not, nor do they make the corresponding distinction between evaluating or executing objects." (SCR.4.2.1)

### compile

    public PyCode compile(Reader reader)

### compile

    public PyCode compile(String script,
                          String filename)

### compile

    public PyCode compile(Reader reader,
                          String filename)

### getLocals

    public PyObject getLocals()

### setLocals

    public void setLocals(PyObject d)

### set

    public void set(String name,
                    Object value)

  Sets a variable in the local namespace.

  Parameters:
    `name` - the name of the variable
    `value` - the object to set the variable to (as converted to an appropriate Python object)

### set

    public void set(String name,
                    PyObject value)

  Sets a variable in the local namespace.

  Parameters:
    `name` - the name of the variable
    `value` - the Python object to set the variable to

### get

    public PyObject get(String name)

  Returns the value of a variable in the local namespace.

  Parameters:
    `name` - the name of the variable
  Returns:
    the value of the variable, or null if that name isn't assigned

### get

    public <T> T get(String name,
                     Class<T> javaclass)

  Returns the value of a variable in the local namespace. The value will be returned as an instance of the given Java class. `interp.get("foo", Object.class)` will return the most appropriate generic Java object.

  Parameters:
    `name` - the name of the variable
    `javaclass` - the class of object to return
  Returns:
    the value of the variable as the given class, or null if that name isn't assigned

### cleanup

    public void cleanup()

Jython homepage