Проблемы с импортом mod_python и подпакетов: ImportError: Модуль не указан
Я изучаю mod_python и у меня проблемы с импортом пакетов.
У меня есть такая структура:
my base dir
|
+- __init__.py
+- index.py
+- package (directory)
|
+- __init__.py
+- package.py (file)
и виртуальный хост Apache вот так:
<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>
в файле index.py у меня есть что-то вроде этого:
from package.package import myobject
....
....
Когда я загружаю index.py из Apache, я получаю 500 Internal Server Error следующим образом:
ImportError: No module named package.package
Что я делаю неправильно?
Ура, Иван
3 ответа
Во-первых, если вы только начинаете веб-развертывание Python, вам не следует использовать mod_python. Сейчас это официально мертвый проект, и он устарел. Используйте вместо этого mod_wsgi.
Фактическая проблема с вашим кодом заключается в том, что вы не поместили свой корневой каталог в путь Python, поэтому mod_python не знает, где его найти. DocumentRoot используется для статических документов, а не для кода - на самом деле вам не следует устанавливать его в качестве базового каталога, так как это небезопасно и может привести к тому, что содержимое вашего кода Python будет доступно через Интернет, а это не то, что вам нужно.
Вместо этого используйте директиву PythonPath:
PythonPath "['/path/to/my base dir']"
В mod_python 3.3 структура файлов кода Python для mod_python.publisher не является пакетом. Убедитесь, что вы читаете:
http://www.modpython.org/live/current/doc-html/pyapi-apmeth.html
В частности, документация о import_module(), как она объясняет, как работает импорт кода.
Убедитесь, что ваш PYTHONPATH правильный: http://www.modpython.org/live/mod_python-3.2.8/doc-html/dir-other-pp.html