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