eradan
eradan

Reputation: 65

mod_python and subpackages importing issues: ImportError: No module named

I'm exploring mod_python and I'm having trouble with the package importing.

I've a structure like this:

my base dir
     |
     +- __init__.py  
     +- index.py    
     +- package (directory)
        |
        +- __init__.py
        +- package.py (file)

and an Apache Virtual Host like this:

<VirtualHost *:80>

        ServerAdmin root at localhost
        ServerName myname
        DocumentRoot /path/to/my base dir

        <Location />
                DirectoryIndex index.html index.py
                Options Indexes MultiViews FollowSymLinks
                AddHandler mod_python .py
                PythonHandler mod_python.publisher
        </Location>

</VirtualHost>

in the index.py file I've something like this:

from package.package import myobject
....
....

When I load index.py from Apache, I get a 500 Internal Server Error as follows:

ImportError: No module named package.package

What am I doing wrong?

Cheers, Ivan

Upvotes: 1

Views: 4048

Answers (3)

Graham Dumpleton
Graham Dumpleton

Reputation: 58523

In mod_python 3.3, the structure of Python code files for mod_python.publisher is not a package. Ensure you read:

http://www.modpython.org/live/current/doc-html/pyapi-apmeth.html

Specifically, the documentation about import_module() as it explains how code importing works.

Upvotes: 0

Daniel Roseman
Daniel Roseman

Reputation: 599450

Firstly, if you're just beginning with Python web deployment you should not be using mod_python. It is now officially a dead project and is deprecated. Use mod_wsgi instead.

The actual issue with your code is that you haven't put your root directory on the Python path, so mod_python doesn't know where to find it. DocumentRoot is used for static documents, not code - in fact you shouldn't set it to your base dir, as that is insecure and may lead to the contents of your Python code being exposed over the web, which is not what you want.

Instead, use the PythonPath directive:

PythonPath "['/path/to/my base dir']"

Upvotes: 3

Krumelur
Krumelur

Reputation: 32497

Make sure your PYTHONPATH is correct: http://www.modpython.org/live/mod_python-3.2.8/doc-html/dir-other-pp.html

Upvotes: 0

Related Questions