Проблемы с импортом mod_python и подпакетов: ImportError: Модуль не указан - PullRequest
1 голос
/ 24 июня 2010

Я изучаю 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 Внутренняя ошибка сервера следующим образом:

ImportError: No module named package.package

Что я делаю не так?

Ура, Иван

Ответы [ 3 ]

3 голосов
/ 24 июня 2010

Во-первых, если вы только начинаете веб-развертывание Python, вы должны , а не использовать mod_python. Сейчас это официально мертвый проект, и он устарел. Вместо этого используйте mod_wsgi.

Фактическая проблема с вашим кодом заключается в том, что вы не поместили свой корневой каталог в путь Python, поэтому mod_python не знает, где его найти. DocumentRoot используется для статических документов, а не для кода - фактически вы не должны устанавливать его в качестве базового каталога, так как это небезопасно и может привести к тому, что содержимое вашего кода Python будет доступно через Интернет, что это не то, что вы хотите.

Вместо этого используйте директиву PythonPath:

PythonPath "['/path/to/my base dir']"
0 голосов
/ 25 июня 2010

В mod_python 3.3 структура файлов кода Python для mod_python.publisher не является пакетом.Убедитесь, что вы прочитали:

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

В частности, документацию о import_module (), объясняющую, как работает импорт кода.

0 голосов
/ 24 июня 2010

Убедитесь, что ваш PYTHONPATH правильный: http://www.modpython.org/live/mod_python-3.2.8/doc-html/dir-other-pp.html

...