Django应用程序路径 项目名称:pro 项目位置:/home/cha0s/pro/ 应用程序位置:/home/cha0s/pro/apps/,其中是博客、评论等不同应用程序的文件夹

Django应用程序路径 项目名称:pro 项目位置:/home/cha0s/pro/ 应用程序位置:/home/cha0s/pro/apps/,其中是博客、评论等不同应用程序的文件夹,django,path,Django,Path,Apache配置: <Location "/"> SetHandler python-program PythonHandler django.core.handlers.modpython SetEnv DJANGO_SETTINGS_MODULE pro.settings PythonDebug On PythonPath "['/home/cha0s/','/home/cha0s/pro/apps

Apache配置:

 <Location "/">
        SetHandler python-program
        PythonHandler django.core.handlers.modpython
        SetEnv DJANGO_SETTINGS_MODULE pro.settings
        PythonDebug On
        PythonPath "['/home/cha0s/','/home/cha0s/pro/apps/']
+ sys.path"  </Location>
但是如果我把这行“/home/cha0s/pro/apps/”从python路径中去掉,按照我的逻辑,然后安装一个模块,比如blog,我需要编写完整的路径,比如pro.apps.blog,它应该可以工作,但它不能。为什么会这样?

解决方案:

 <Location "/">
        SetHandler python-program
        PythonHandler django.core.handlers.modpython
        SetEnv DJANGO_SETTINGS_MODULE pro.settings
        PythonDebug On
        PythonPath "['/home/cha0s/','/home/cha0s/pro/apps/']
+ sys.path"  </Location>
谢谢林。我不知道如何标记Thierry Lam的答案是正确的,所以我就把它写在这里


init.py文件必须在apps目录中创建,即使它只是一个没有文件的目录。那么在apache配置中就不需要“/home/cha0s/pro/apps/”行了,模块可以像pro.apps.blog一样声明

你有下面的文件
apps/\uuuu init\uuuuuuuuuuuuuuuuupy
吗?

如果我理解正确,我认为这是因为Django无法将“pro.apps.blog”解析为一条真正的路径。@Thierry Lam hmm。。。。你也许是对的。。。我没想过。我在apps目录中没有init.py。不知道为什么,但我认为它们只需要放在一些其他文件类似于views.py的文件夹中,但现在你提到它,你可能是对的=)现在就要试试。来自:“需要
\uuuu init\uuuuu.py
文件才能使Python将目录视为包含包;这样做是为了防止具有公共名称(如字符串)的目录无意中隐藏稍后在模块搜索路径上出现的有效模块。在最简单的情况下,
\uuuuu init\uuuuuuuuuuuuuupy
可以只是一个空文件“换句话说,如果您想将目录用作点式导入的一部分,它需要一个
\uuuuuuuuuuuuuuuuuuuuuuuuupy
文件,即使它不包含其他文件。@Thierry Lam将您的评论作为答案发布=)