Using Python on Inti¶
Use this guide after logging into Inti when you need an interactive EOVSA Python session or want to run a script. Inti provides isolated runtimes for legacy Python 2 software and the current Python 3.8 data-processing stack.
Temporary runtime environments
These commands start short-lived containers; they do not replace Inti's host Python installation. Files saved in the approved mounted directories remain after the command exits. Packages or files created only inside a container do not.
Start here¶
At the Inti shell prompt, load the standard command shortcuts:
This prints a short command guide. Use eovsahelp to show the guide again
without reloading the setup.
If eovsaenv is not defined in an existing session, load the setup once for
your shell:
For Bash:
For tcsh or csh:
A new login shell normally loads the appropriate setup automatically.
Choose a runtime¶
| Command | Use it for |
|---|---|
py38 [args] |
Current EOVSA Python 3.8 processing work. Start here unless the software specifically requires Python 2. |
ipy38 |
Interactive Python 3.8 with IPython and plotting support. |
py2 [args] |
Legacy Python 2.7 scripts and modules. |
ipy2 |
Interactive Python 2.7 with IPython and plotting support. |
lwa [args] |
Python 3.8 with the approved OVRO-LWA data mounts. |
eovsaenv |
Reload the shortcuts for the current shell and print the quick guide. |
eovsahelp |
Print the quick guide without reloading anything. |
Examples¶
# Start an interpreter or IPython session
eovsaenv
py38
ipy38
# Inspect a package version
py38 -c 'import numpy; print(numpy.__version__)'
# Run a legacy script
py2 /common/python/current/goes.py
# Run a current Python module
py38 -m eovsapy.daily_xsp
Use Ctrl-D or exit() to leave Python or IPython. The temporary container is
then removed. eovsaenv and eovsahelp are host-shell commands, so run them at
the Bash, tcsh, or csh prompt rather than at an In [N]: IPython prompt.
Plotting over SSH¶
JupyterLab through an SSH tunnel¶
JupyterLab is the recommended option for interactive Python 3.8 plotting. The plot is rendered in your local browser, so it is usually more responsive than an X11 window.
On your local computer, open an SSH tunnel and leave it running:
In a second Inti session, start JupyterLab:
cd /scratch/eovsa/containers/eovsa-runtimes
docker compose --profile manual run --rm py38 \
jupyter lab --no-browser --ip=127.0.0.1 --port=8888 \
--ServerApp.root_dir=/scratch/eovsa/workdir
Open the http://127.0.0.1:8888/lab?... URL printed by Jupyter. For an
interactive Matplotlib canvas, put this at the top of the notebook:
Keep the server bound to 127.0.0.1, keep token authentication enabled, and
connect only through the SSH tunnel. Stop the server with Ctrl-C.
Native plot windows with X11¶
Start XQuartz on the Mac, connect with X11 forwarding, and verify that the remote shell has a display:
A value such as localhost:15.0 means forwarding is active. You can then use
ipy2 or ipy38 and open a Matplotlib window with show():
Do not use xhost +. If macOS or XQuartz rejects an untrusted ssh -X
connection, reconnect to this trusted host with ssh -Y.
Save a plot without a display¶
When DISPLAY is empty, save the figure to a mounted host path:
The saved file remains available on Inti after IPython exits.
Deployment, image maintenance, validation, and rollback procedures remain in the internal Inti runtime runbook for authorized maintainers.
Public user guide last reviewed: 2026-09-03.