Configuration & Settings
Oct2PySettings provides a single object that carries all session defaults.
It is built on pydantic-settings,
which means it reads values from environment variables automatically, so you
can configure oct2py without changing any code — useful in CI, Docker, or
shared environments.
Quick start
from oct2py import Oct2Py, Oct2PySettings
s = Oct2PySettings(backend="disable", timeout=30, plot_format="png")
oc = Oct2Py(settings=s)
Any field you do not set keeps its default value. Individual keyword
arguments to Oct2Py always take precedence over the settings object:
# timeout from kwarg wins; everything else comes from settings
oc = Oct2Py(settings=s, timeout=5)
Environment variables
Every field (except executable) is also readable from an environment
variable prefixed with OCT2PY_. This lets you configure a session
without modifying source code:
export OCT2PY_BACKEND=disable
export OCT2PY_TIMEOUT=60
export OCT2PY_PLOT_FORMAT=png
export OCT2PY_LOAD_OCTAVERC=false
python myscript.py # default `octave` instance picks these up
The default global octave instance is created at import time, so env
vars must be set before import oct2py.
Octave executable aliases
The executable field accepts two legacy environment variables in
addition to OCT2PY_EXECUTABLE:
| Variable | Priority |
|---|---|
OCTAVE_EXECUTABLE |
highest |
OCTAVE |
fallback |
export OCTAVE_EXECUTABLE=/opt/octave-9/bin/octave-cli
python myscript.py
Reconfiguring the global instance
Use oct2py.configure() to replace the global octave instance with
one that uses new settings:
import oct2py
oct2py.configure(backend="disable", timeout=60)
# oct2py.octave now uses those settings
You can also pass a pre-built Oct2PySettings object:
from oct2py import Oct2PySettings
import oct2py
s = Oct2PySettings(backend="qt", plot_format="png", plot_width=1200)
oct2py.configure(settings=s)
Common recipes
Headless / CI environments
Suppress all figure rendering so that Octave never tries to open a display:
oc = Oct2Py(backend="disable")
Or via environment variable:
OCT2PY_BACKEND=disable python myscript.py
Reproducible / sandboxed environments
Skip loading ~/.octaverc to prevent user configuration from affecting
results:
oc = Oct2Py(load_octaverc=False)
Or:
OCT2PY_LOAD_OCTAVERC=false python myscript.py
Custom Octave executable
oc = Oct2Py(executable="/opt/octave-9/bin/octave-cli")
After the session starts, oc.executable is updated to the full resolved
path actually used.
Session-wide plot defaults
Set default format, size, and resolution so you do not have to repeat
them on every eval or feval call:
oc = Oct2Py(plot_format="png", plot_width=1200, plot_height=900, plot_res=150)
oc.eval("plot([1 2 3])", plot_dir="/tmp/figs") # uses the instance defaults
Per-call arguments still override the instance defaults:
oc.eval("plot([1 2 3])", plot_dir="/tmp/figs", plot_format="svg") # svg this time
Passing extra CLI options
oc = Oct2Py(extra_cli_options="--traditional")
Settings from a .env file
Oct2PySettings is built on pydantic-settings,
which supports .env files out of the box:
from oct2py import Oct2PySettings
s = Oct2PySettings(_env_file=".env")
oc = Oct2Py(settings=s)
The path is resolved relative to the current working directory. A .env file
might look like:
OCT2PY_BACKEND=disable
OCT2PY_TIMEOUT=120
OCT2PY_PLOT_FORMAT=png
Settings reference
All fields and their defaults:
| Field | Default | OCT2PY_ env var |
Description |
|---|---|---|---|
executable |
None |
OCT2PY_EXECUTABLE (also OCTAVE_EXECUTABLE, OCTAVE) |
Path to Octave binary |
timeout |
None |
OCT2PY_TIMEOUT |
Command timeout in seconds |
oned_as |
"row" |
OCT2PY_ONED_AS |
Write 1-D arrays as "row" or "column" vectors |
temp_dir |
None |
OCT2PY_TEMP_DIR |
Directory for MAT exchange files |
convert_to_float |
True |
OCT2PY_CONVERT_TO_FLOAT |
Convert integers to float before sending to Octave |
backend |
"default" |
OCT2PY_BACKEND |
Graphics toolkit; "disable" suppresses all rendering |
keep_matlab_shapes |
False |
OCT2PY_KEEP_MATLAB_SHAPES |
Preserve MATLAB array shapes (scalars as (1,1) etc.) |
auto_show |
None |
OCT2PY_AUTO_SHOW |
Auto-display figures via matplotlib (default: on when PYCHARM_HOSTED is set) |
load_octaverc |
True |
OCT2PY_LOAD_OCTAVERC |
Source ~/.octaverc on startup |
extra_cli_options |
"" |
OCT2PY_EXTRA_CLI_OPTIONS |
Extra flags appended to the Octave invocation |
plot_format |
"svg" |
OCT2PY_PLOT_FORMAT |
Default saved-plot format |
plot_name |
"plot" |
OCT2PY_PLOT_NAME |
Default base name for saved plots |
plot_width |
None |
OCT2PY_PLOT_WIDTH |
Default plot width in pixels |
plot_height |
None |
OCT2PY_PLOT_HEIGHT |
Default plot height in pixels |
plot_res |
None |
OCT2PY_PLOT_RES |
Default plot resolution in DPI |