7

有人可以告诉我为什么我需要将我的项目根路径添加到 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')
4

2 回答 2

5

由于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

于 2010-04-07T20:31:55.213 回答
3

大概您的项目中有代码正在执行from myapp import foo.

两种选择:

  • 将其更改为from djapp.myapp import foo,不建议这样做,因为它会妨碍可移植性;
  • 仅添加djapp您的 WSGI,并将其设置DJANGO_SETTINGS_MODULE'settings'.
于 2010-03-25T13:23:26.813 回答