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
....
....
当我通过Apache加载index.py时,出现了500内部服务器错误,具体如下:
ImportError: No module named package.package
我哪里做错了呢?
谢谢,
伊万
3 个回答
0
在mod_python 3.3中,mod_python.publisher的Python代码文件结构并不是一个包。确保你阅读一下:
http://www.modpython.org/live/current/doc-html/pyapi-apmeth.html
特别是关于import_module()的文档,因为它解释了代码导入是怎么工作的。
0
确保你的PYTHONPATH设置正确:
http://www.modpython.org/live/mod_python-3.2.8/doc-html/dir-other-pp.html
3
首先,如果你刚开始学习如何在网上部署Python应用,不要使用mod_python。这个项目现在已经不再维护了,算是“死掉”了。你应该使用mod_wsgi。
你代码中的实际问题是,你没有把根目录添加到Python的路径中,所以mod_python不知道在哪里找你的文件。DocumentRoot是用来放静态文件的,不是用来放代码的——实际上,你不应该把它设置为你的基础目录,因为这样不安全,可能会导致你的Python代码内容被暴露在网上,这可不是你想要的。
相反,你应该使用PythonPath指令:
PythonPath "['/path/to/my base dir']"