Are you using local::lib? You may need to source the ~/.bashrc (or some of the last lines of it) of the user who have installed the modules before running your script.
Sorry if my advice was wrong.
Comment on Re: CRON job failing but manual run works