有人可以给我一个指针,说明为什么我需要将我的项目根路径添加到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')
答案 0 :(得分:4)
由于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\
你有什么。这样项目总是可以称为项目:)
希望有所帮助。
GrtzG
答案 1 :(得分:3)
据推测,您的项目中的代码正在执行from myapp import foo
。
两个选项:
from djapp.myapp import foo
,这不建议使用,因为它会阻止可移植性; djapp
,并将DJANGO_SETTINGS_MODULE
设置为'settings'
。