org.python.util

## Class PythonInterpreter

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

Direct Known Subclasses:
  InteractiveInterpreter

    public class PythonInterpreter
    extends java.lang.Object

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

### Constructor Summary

Constructors
Constructor and Description
`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

All Methods Static Methods Instance Methods Concrete Methods
`void` `cleanup()`
`PyCode` `compile(java.io.Reader reader)`
`PyCode` `compile(java.io.Reader reader, java.lang.String filename)`
`PyCode` `compile(java.lang.String script)` Compiles a string of Python source as either an expression (if possible) or a module.
`PyCode` `compile(java.lang.String script, java.lang.String filename)`
`PyObject` `eval(PyObject code)` Evaluates a Python code object and returns the result.
`PyObject` `eval(java.lang.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(java.lang.String s)` Executes a string of Python source in the local namespace.
`void` `execfile(java.io.InputStream s)`
`void` `execfile(java.io.InputStream s, java.lang.String name)`
`void` `execfile(java.lang.String filename)` Executes a file of Python source in the local namespace.
`PyObject` `get(java.lang.String name)` Returns the value of a variable in the local namespace.
`<T> T` `get(java.lang.String name, java.lang.Class<T> javaclass)` Returns the value of a variable in the local namespace.
`PyObject` `getLocals()`
`PySystemState` `getSystemState()`
`static void` `initialize(java.util.Properties preProperties, java.util.Properties postProperties, java.lang.String[] argv)` Initializes the Jython runtime.
`void` `set(java.lang.String name, java.lang.Object value)` Sets a variable in the local namespace.
`void` `set(java.lang.String name, PyObject value)` Sets a variable in the local namespace.
`void` `setErr(java.io.OutputStream outStream)`
`void` `setErr(PyObject outStream)`
`void` `setErr(java.io.Writer outStream)`
`void` `setIn(java.io.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(java.io.Reader inStream)`
`void` `setLocals(PyObject d)`
`void` `setOut(java.io.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(java.io.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(java.util.Properties preProperties,
                                  java.util.Properties postProperties,
                                  java.lang.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(java.io.Reader inStream)

#### setIn

    public void setIn(java.io.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(java.io.Writer outStream)

#### setOut

    public void setOut(java.io.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(java.io.Writer outStream)

#### setErr

    public void setErr(java.io.OutputStream outStream)

#### eval

    public PyObject eval(java.lang.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(java.lang.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(java.lang.String filename)

Executes a file of Python source in the local namespace.

#### execfile

    public void execfile(java.io.InputStream s)

#### execfile

    public void execfile(java.io.InputStream s,
                         java.lang.String name)

#### compile

    public PyCode compile(java.lang.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(java.io.Reader reader)

#### compile

    public PyCode compile(java.lang.String script,
                          java.lang.String filename)

#### compile

    public PyCode compile(java.io.Reader reader,
                          java.lang.String filename)

#### getLocals

    public PyObject getLocals()

#### setLocals

    public void setLocals(PyObject d)

#### set

    public void set(java.lang.String name,
                    java.lang.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(java.lang.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(java.lang.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(java.lang.String name,
                     java.lang.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()