mod_python和子包导入问题:ImportError:没有命名的模块

时间:2010-06-24 11:25:12

标签: python apache mod-python

我正在探索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
....
....

当我从Apache加载index.py时,我得到500内部服务器错误 如下:

ImportError: No module named package.package

我做错了什么?

干杯, 伊万

3 个答案:

答案 0 :(得分:3)

首先,如果您刚刚开始使用Python Web部署,那么您应该使用mod_python。它现在正式成为一个死项目,已被弃用。改为使用mod_wsgi。

您的代码的实际问题是您没有将根目录放在Python路径上,因此mod_python不知道在哪里找到它。 DocumentRoot用于静态文档,而不是代码 - 实际上你不应该将它设置为你的基础目录,因为这是不安全的,并且可能导致你的Python代码的内容通过网络暴露,这不是你想要的。

相反,请使用PythonPath指令:

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

答案 1 :(得分:0)

答案 2 :(得分:0)

在mod_python 3.3中,mod_python.publisher的Python代码文件结构不是包。请务必阅读:

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

具体来说,有关import_module()的文档,因为它解释了代码导入的工作原理。

相关问题