The solution is named Ethersweep, and is a small PCB stack that sits on the rear of the common NEMA17-format stepper motor ... with Arduino covering the firmware and host control side in python.
If one-dimensional movement is enough for you, though, check out this linear stepper motor that works on a similar principle.