WSGI 下需要的项目 * 和 * 应用程序的 Django sys.path.append

标签 django django-wsgi

有人可以告诉我为什么我需要将我的项目根路径添加到 python 路径以及我的 WSGI 文件中的应用程序本身吗?

项目库称为“djapp”,应用程序称为“myapp”。

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

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

如果我省略带有“/../djapp/”的行,日志会告诉我无法导入“myapp”,即使“djapp.settings”是。 (验证 'djapp' 已导入)

它可以使用 ./manage.py 命令正常运行。有一个 __init__在项目文件夹中。

为了测试,我使用 addsitedir 看到了同样的问题:
site.addsitedir('/home/user/web/project/')
site.addsitedir('/home/user/web/project/djapp')

最佳答案

djapp (django 项目文件夹)位于也属于部署的父文件夹中,我将其重命名为 djapp文件夹简单到 project .
那么这段代码总是正确的:

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

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

完整的文件夹布局是:
host.example.com\
    etc\
    bin\
    project\
    logs\

你有什么。这样项目总是可以被称为项目:)

希望有帮助。

格茨G

关于WSGI 下需要的项目 * 和 * 应用程序的 Django sys.path.append,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2515686/

相关文章:

python - AttributeError - 模块 'django.http.request' 没有属性 'META'

django - 在Tornado Web服务器上运行Django以获得异步+ Django管理+ Django Orm可能性的最佳方法是什么?

python - 运行时错误: maximum recursion depth exceeded after upgrading

python - 在 https ://example. org/directory 中运行 django - python 和 php

python - DRF 使用带有源参数的序列化器更新资源

python - 属性错误 - Django - 列表

python - 从数据库加载大数据并转换为 JSON 时如何提高性能

python - Django:通过外键将两个表连接到第三个表?

django - 使用 wsgi 将 stdout 和 stderr 重定向到 Django 中的文件

wsgi - uwsgi 选项 --wsgi-file 和 --module 无法识别