Inky Impression Screen Update Fails When Run via systemd

I have a script that generates a screen image and displays it on the Inky Impression, and it works perfectly when run from a terminal. However, when I set up the script to run via systemd as a service, the screen starts updating and then stops halfway through, leaving the display in a bad state.

Why would this happen only when running the Python file as a service? I am stumped–any direction would be much appreciated!

The service log says the following:

script.service - Script

Loaded: loaded (/lib/systemd/system/script.service; enabled; vendor preset: enabled)

Active: failed (Result: exit-code) since Sun 2021-06-13 00:27:00 EDT; 45s ago

Process: 557 ExecStart=/usr/bin/python3 /home/pi/script.py (code=exited, status=1/FAILURE)

Main PID: 557 (code=exited, status=1/FAILURE)

Jun 13 00:26:59 Pi3B python3[557]: inky.show()

Jun 13 00:26:59 Pi3B python3[557]: File “/usr/local/lib/python3.7/dist-packages/inky/inky_uc8159.py”, line 365, in show

Jun 13 00:26:59 Pi3B python3[557]: self._update(buf.astype(‘uint8’).tolist(), busy_wait=busy_wait)

Jun 13 00:26:59 Pi3B python3[557]: File “/usr/local/lib/python3.7/dist-packages/inky/inky_uc8159.py”, line 329, in _update

Jun 13 00:26:59 Pi3B python3[557]: self._busy_wait()

Jun 13 00:26:59 Pi3B python3[557]: File “/usr/local/lib/python3.7/dist-packages/inky/inky_uc8159.py”, line 309, in _busy_wait

Jun 13 00:26:59 Pi3B python3[557]: raise RuntimeError(“Timeout waiting for busy signal to clear.”)

Jun 13 00:26:59 Pi3B python3[557]: RuntimeError: Timeout waiting for busy signal to clear.

Jun 13 00:27:00 Pi3B systemd[1]: script.service: Main process exited, code=exited, status=1/FAILURE

Jun 13 00:27:00 Pi3B systemd[1]: script.service: Failed with result ‘exit-code’.