When Python cannot find the pyferret module, it is because PYTHONPATH is not defined, or does not include the pyferret module directory. One also needs to define LD_LIBRARY_PATH so the pyferret module can find the pyferret library it needs.
Starting with PyFerret 1.1.0, the ferret_paths.sh or ferret_paths.csh script that come with PyFerret defines these variables. Previously, this was done in the pyferret.sh (or pyferret.csh) script.
If you are using a ferret_paths script from an older version, you should regenerate the ferret_paths scripts using Finstall (option 2) found in the PyFerret bin subdirectory (requires that you extracted the environment tar.gz file for this version or PyFerret),
If you using a highly customized ferret_paths script that you do not want to regenerate, you need to add the definition of PYTHONPATH and LD_LIBRARY_PATH to this ferret_paths script. Their definitions (and the definition of "pysite" that they use) can be found near the end of the ferret_paths_template.sh and ferret_paths_template.csh scripts in the PyFerret bin subdirectory. These definitions can be copied as-is from the appropriate template script (.sh for a Bourne-shell script, or .csh for a C-shell script).