Psyco and PyOgre        

Psyco works with pyogre, but it causes problems if you try to import and run psyco too soon. You should not start psyco running until after you have setup Ogre, perferably just before calling root.startRendering. For example, look at the sampleframework.py and change this function:

def go( self ):
        if not self._setUp():
            return
        
        self.root.startRendering()

To be this:

def go( self ):
        if not self._setUp():
            return
        
        # Import Psyco if available
        try:
            import psyco
            psyco.full()
        except ImportError:
            pass
 
        self.root.startRendering()

This will allow psyco to do its thing without affecting ogre's startup process. You should also change all of your class definitions to inherit from the new-style python object (this helps psyco speed things up). To do this with the sample framework, you would replace these lines:

class Application:
 class FrameListener(ogre.FrameListener):

To this:

class Application( object ):
 class FrameListener(ogre.FrameListener, object):

Do this for all classes you intend to use psyco on. There should not be any noticable difference in application behavior by making this change.

If you truely intend to use psyco in your application you should really run it through psyco's profiler and manually select what you want to optimize. Read more information on the Psyco Website