I assume you're running your Python script by double-clicking it in some GUI instead of from the command line (because opening /bin/sh from a shell is pretty useless). That's causing you not to see the NameError saying subprocess isn't defined because you forgot to import it.
Fixing that is not going to solve your problem, though.
First, realise that your C program is superfluous; you can just start /bin/sh through subprocess.Popen directly. But if you're doing that by, as I'm guessing, running your script from a GUI, you aren't going to end up with a new terminal window with a shell running in it; /bin/sh is going to realise it's not running on a TTY and exit immediately.
Instead what you probably want to do is start a new terminal, and let that run your shell. How you do that depends on what terminal you normally use, but here's a possible way of doing it if you're using xterm (other common terminals include gnome-terminal or konsole):
#!/usr/bin/env python
import os
os.execv('/usr/bin/xterm', ['xterm'])
(You'll want to use os.execv rather than something from subprocess or os.system, because that makes the new terminal replace the Python process instead of running pointlessly as a child of it.)