Arduino has a built in MIDI library.
An OSC API was developed at CNMAT Berkeley (same institute where OSC was originally developed).
Best way to go about it would likely be using Teensyduino for programming, as Teensy is intended exactly for applications like this & Arduino libraries to write the code.
Unless you want to make your own VCV Module… just go for MIDI and use MIDI-Cat.
Programming the Teensy and soldering Buttons & Knobs on a breadboard is no biggie.
What I don’t understand is what Python has to do with it?
Arduino and VCV are both C++ as far as I know.
Just add controls to the analog ports of a teensy, call and read those ports in a loop and return their value - then use the MIDI library to bind each port to a different MIDI CC address, convert its value to 0-127. Set up as MIDI interface and send input on all channels.
Now when connecting your Teensy via USB, your PC should autom. recognise it as a MIDI device.
What really warrants some extensive research here is finding the right knobs.
Saying this as one amateur to the other: the code is 95% copy+paste, the soldering (unless you want more than buttons and knobs) is beginner level
and prototyping can be set up in a matter of minutes on a solderless breadboard.
If your knobs are shit though… you’ll regret it.