Class PythonRunner
This class encapsulates the Unity Editor API support for Python.
Inherited Members
Namespace: UnityEditor .Scripting.Python
Assembly: Unity.Scripting.Python.Editor.dll
Syntax
public static class PythonRunner
Properties
IsInitialized
Verify whether Python has been initialized yet.
Normally you'd simply call EnsureInitialized without checking. This access is principally useful when shutting down.
Declaration
public static bool IsInitialized { get; }
Property Value
Type | Description |
---|---|
bool |
PythonInterpreter
The full path to the Python interpreter.
Accessing this initializes Python if it hasn't been already.
Declaration
public static string PythonInterpreter { get; }
Property Value
Type | Description |
---|---|
string | A string representing the full path to the Python executable. |
PythonVersion
The version of the Python interpreter.
Accessing this initializes Python if it hasn't been already.
Declaration
public static string PythonVersion { get; }
Property Value
Type | Description |
---|---|
string | A string representing the version. |
Methods
AddToSitePackages(IEnumerable<string>)
Appends path entries to Python's sys.path. If a given path is already present in sys.path it will not be reappended.
Declaration
public static void AddToSitePackages(IEnumerable<string> sitePackages)
Parameters
Type | Name | Description |
---|---|---|
IEnumerable<string> | sitePackages | List of paths to add to sys.path |
AddToSitePackages(string)
Convenience function to add a single path entry. Wraps AddToSitePackages.
Declaration
public static void AddToSitePackages(string sitePackage)
Parameters
Type | Name | Description |
---|---|---|
string | sitePackage | Single path to add to sys.path |
EnsureInitialized()
Ensures the Python API is initialized.
Safe to call frequently.
Throws if there's an installation error.
Declaration
public static void EnsureInitialized()
RunFile(string, string)
Runs a Python script in the Unity process.
Declaration
public static void RunFile(string pythonFileToExecute, string scopeName = null)
Parameters
Type | Name | Description |
---|---|---|
string | pythonFileToExecute | The script to execute. |
string | scopeName | Value to write to Python special variable |
RunString(string, string)
Runs Python code in the Unity process.
Declaration
public static void RunString(string pythonCodeToExecute, string scopeName = null)
Parameters
Type | Name | Description |
---|---|---|
string | pythonCodeToExecute | The code to execute. |
string | scopeName | Value to write to Python special variable |
SpawnProcess(string, IEnumerable<string>, Dictionary<string, string>, bool, bool, bool, bool)
Spawns a process with the PATH set up to find the Python Scripting's installed Python
interpreter (and Scripts directory on Windows). Additional environment variables can
be supplied throught the environment
dictionary.
The PATH environment variable may be overriden, in which case it completely overrides the current value of Environment.GetEnvironmentVariable("PATH"). However, the path to the python interpreter is always added as the first item in the PATH environment variable passed to the spawned process.
If the executed program is in the PATH environment variable passed to this function, this includes the Python interpreter, the absolute path to the executable/script must be given on Windows. It is recommended to always give the full path to the executable in the programName parameter to ensure consistency. If launching a process that is the Python interpreter, use the SpawnPythonProcess convenience function.
The arguments are passed as-is to the spawned process. Proper escaping is the responsibility of the caller.
This function is not re-entrant or thread-safe.
As documented in System.Diagnostics.ProcessStartInfo, UseShellExecute is incompatible with input/output redirection and will throw an exception on process launch.
Declaration
public static Process SpawnProcess(string programName, IEnumerable<string> arguments = null, Dictionary<string, string> environment = null, bool showWindow = false, bool useShell = false, bool redirectOutput = false, bool redirectInput = false)
Parameters
Type | Name | Description |
---|---|---|
string | programName | The name or path to the program to launch. |
IEnumerable<string> | arguments | Arguments to be passed to the subprocess. Proper argument quoting and escaping is the responsibility of the caller. |
Dictionary<string, string> | environment | Map of additional environment variables to be passed to the subprocess. |
bool | showWindow | If true, shows a console window |
bool | useShell | True to set the Process.StartInfo.UseShellExecute to true |
bool | redirectOutput | True to set the Process.StartInfo.RedirectStandardOutput and Process.StartInfo.RedirectStandardError |
bool | redirectInput | True to set the Process.StartInfo.RedirectStandardInput |
Returns
Type | Description |
---|---|
Process | A Process object or null on startup failure. It is the caller's responsibility to properly dispose of the Process object. |
SpawnPythonProcess(IEnumerable<string>, Dictionary<string, string>, bool, bool, bool, bool)
Convenience function to launch a subprocess that is the python interpreter. Wraps around SpawnSubprocess.
Declaration
public static Process SpawnPythonProcess(IEnumerable<string> arguments = null, Dictionary<string, string> environment = null, bool showWindow = false, bool useShell = false, bool redirectOutput = false, bool redirectInput = false)
Parameters
Type | Name | Description |
---|---|---|
IEnumerable<string> | arguments | Arguments to be passed to the launched python interpreter |
Dictionary<string, string> | environment | Map of additional environment variables to be passed to the subprocess. |
bool | showWindow | If true, shows a console window |
bool | useShell | True to set the Process.StartInfo.UseShellExecute to true |
bool | redirectOutput | True to set the Process.StartInfo.RedirectStandardOutput and Process.StartInfo.RedirectStandardError |
bool | redirectInput | True to set the Process.StartInfo.RedirectStandardInput |
Returns
Type | Description |
---|---|
Process | A Process object or null on startup failure. It is the caller's responsibility to properly dispose of the Process object. |
SpawnShell()
Spawns a Windows Powershell with the PATH set up to find the Python Scripting's installed Python interpreter.
Declaration
public static void SpawnShell()