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
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: