@dhylands. The poster told above that when connected to a terminal, and booted via reset button or Ctrl_D, main.py is executed. It fails on pure power on. That's indeed strange: executing boot.py, but not main.py. As if that powering sets the device into RAW_REPL mode.
I tested two devices, Wemos LOLIN32 pro and sparkfun esp32 thing, here with a simple smart phone charger, and it runs main.py. Little script here. Pin 5 is connected to a LED

This module type should be fine. Which version of the firmware did you install, and did you try to
- erase the flash and
- reload the firmware?
Also, what happens if you just power the device (w/o terminal) and push the reset button (eventually labeled as EN).