I am working in vanilla Emacs 23 on various python programs, when I evaluate a buffer, an inferior python shell is started as expected and the scripts run fine...
This is all fine, however, when working on multiple (unrelated) projects, the same python instance is used, is there a way I can create a new inferior python shell per source file?
Thanks
When I need a new inferior python shell in emacs and want to specify which python buffers send code to each shell I do the following.  This gives me a little more control.

Use the M-x rename-buffer command to set the existing inferior shell buffer name to something like *Python-otherbuff*

(setq-local python-shell-buffer-name "Python-otherbuff") in each buffer which should interact with the old inferior shell.

Use the usual command to create a new inferior python shell (e.g. C-c C-p) which will create a buffer called *Python* which all python buffers will interact with by default.
Emacs: starting a new inferior python shell when evaluating buffer