Using Drush 5.8 contrib modules are not available if executed externally.
E.g. Drush Entity is not available if executed on a Django view via a check_output:
check_output("drush -l example.com -r /var/www/my/example/site/ entity-read node", shell=True)
Any command regarding Drush Entity return an error specifying that the command "could not be found. Run drush cache-clear drush
to clear the commandfile cache if you have installed new extensions."
The same command is available if executed via an interactive python shell or via ssh.
I've installed Drush Entity in this way:
drush dl drush_entity
This command on my system put drush_entity into /home/admin/.drush directory. This directory seems to be ignored, since site-alias too are ignored if i put them inside that directory.