使用WSGI部署Django:应用导入错误

1 投票
1 回答
2557 浏览
提问于 2025-04-15 19:40

我刚接触apache、linux和python的世界。我正在尝试通过WSGI(推荐的方式)在apache上部署django应用。

我的django项目目录结构如下...

  • /
  • /apache/django.wsgi
  • /apps/ #我把所有的应用放在这个目录里
  • /apps/providers/
  • /apps/shopping/
  • /apps/...
  • /middleware/
  • ...

在apache中,我有以下设置....

LoadModule wsgi_module modules/mod_wsgi.so
WSGIScriptAlias / D:/Projects/project-name/apache/django.wsgi

<Directory "D:/Projects/project-name/apache/">
  Allow from all
  Order deny,allow
</Directory>

django.wsgi文件包含以下代码...

import os
import sys
import settings

sys.path.append(os.path.dirname(os.path.abspath(__file__)) + '/..')

os.environ['DJANGO_SETTINGS_MODULE'] = 'project_name.settings'

import django.core.handlers.wsgi

application = django.core.handlers.wsgi.WSGIHandler()

运行时,我在apache的error.log中发现了这个错误...

  • 错误发生在这一行:from apps.providers.models import Provider
  • 导入错误:没有名为providers.models的模块

我不知道为什么会出现这个错误。它应该从apps.providers.models加载Provider,但却试图从providers.model加载。

任何解决方案都将不胜感激。

谢谢

1 个回答

1

试试这个:

sys.path.insert(0, os.path.join(os.path.abspath(os.path.dirname(__file__)),'..'))

这个方法会把你的项目文件夹放在最前面,并且使用os.path.join来向上移动一个目录(在Windows上这样做可能更好)。

有可能你的Python路径上还有另一个“apps”模块。

撰写回答