Error importing modules with mod_python

Diez B. Roggisch deets at nospam.web.de
Mon Jul 21 13:50:39 EDT 2008


Aaron Scott wrote:

> I've installed mod_python, and everything seems to be working, but it
> fails when I try to import another file into the file that's actually
> producing the output. I have these lines at the top of index.py:
> 
> from mod_python import apache
> from storylab import *
> 
> ... and in the directory where index.py resides (/htdocs/python/), I
> have a directory called "storylab". Inside that directory is
> __init__.py. When I try to execute /htdocs/python/index.py, I get the
> following error:
> 
> ---
> 
> MOD_PYTHON ERROR
> ProcessId:      828
> Interpreter:    'localhost'
> ServerName:     'localhost'
> DocumentRoot:   'C:/htdocs'
> URI:            '/python/index.py'
> Location:       None
> Directory:      'C:/htdocs/python/'
> Filename:       'C:/htdocs/python/index.py'
> PathInfo:       ''
> Phase:          'PythonHandler'
> Handler:        'index'
> 
> Traceback (most recent call last):
> 
>   File "C:\Python25\lib\site-packages\mod_python\importer.py", line
> 1537, in HandlerDispatch
>     default=default_handler, arg=req, silent=hlist.silent)
> 
>   File "C:\Python25\lib\site-packages\mod_python\importer.py", line
> 1202, in _process_target
>     module = import_module(module_name, path=path)
> 
>   File "C:\Python25\lib\site-packages\mod_python\importer.py", line
> 296, in import_module
>     log, import_path)
> 
>   File "C:\Python25\lib\site-packages\mod_python\importer.py", line
> 680, in import_module
>     execfile(file, module.__dict__)
> 
>   File "C:\htdocs\python\index.py", line 2, in <module>
>     from storylab import *
> 
> ImportError: No module named storylab
> 
> ---
> 
> What am I doing wrong? Any insight would be greatly appreciated.

You need to tell python that it should add the path your storylab-module is
residing in to the sys.path-list of module locations.

There are a bunch of ways to do so:

 - in your main-script, import sys, and append the proper path to sys.path
 - add a .pth-file into python's site-packages that points to the location
 - set the environment variable PYTHONPATH 
 - use distutils or setuptools to proper install the module.

Google will help you to find additional information about the above
mentioned concepts.

Diez



More information about the Python-list mailing list