Make sure that your module is in the Python search path, which may differ from yours for the Apache user. You can either set the path in the environment variable or from the Python code itself before trying to import it.
Note the mention of an installation-dependent default in the [following][1]:
6.1.2. The Module Search Path
When a module named spam
is imported, the interpreter searches for a
file named spam.py
in the directory containing the input script and
then in the list of directories specified by the environment variable
PYTHONPATH
. This has the same syntax as the shell variable PATH
, that
is, a list of directory names. When PYTHONPATH
is not set, or when the
file is not found there, the search continues in an
installation-dependent default path; on Unix, this is usually
.:/usr/local/lib/python
.
Actually, modules are searched in the list of directories given by the
variable sys.path
which is initialized from the directory containing
the input script (or the current directory), PYTHONPATH
and the
installation-dependent default. This allows Python programs that know
what they’re doing to modify or replace the module search path. Note
that because the directory containing the script being run is on the
search path, it is important that the script not have the same name as
a standard module, or Python will attempt to load the script as a
module when that module is imported. This will generally be an error.
See section Standard Modules for more information.
See these questions:
Expand Python Search Path to Other Source
How to import a module given the full path?