OK, I give up. Why does workaround #2 work? Also, I didn't realize this before, but when you call os.spawnv, the argument list you pass starts with the name of the executable you're calling! When you call a program from cmd.exe, that program name is the first parameter automatically. But with spawnv, you do that manually!
Anyway, thanks for your help! -- http://mail.python.org/mailman/listinfo/python-list