Из сообщения об ошибке похоже, что вам нужно передать полный путь "foo.py" к вашему вызову Popen. Обычно просто наличие «foo.py» будет искать в вашем текущем рабочем каталоге, но это может быть немного непредсказуемо для Windows, как я обнаружил. Ваш, кажется, прыгает с диалогом открытия файла.
Во-вторых, просто для примера вам нужно передать foo.py в качестве аргумента исполняемому файлу python.exe, а не самому файлу foo.py. Опять же, я хотел бы указать это путем.
Итак, чтобы быть в безопасности, что-то вроде:
subprocess.Popen([r'C:\Python2.5\python.exe', r'C:\path\to\foo.py'])