簡體   English   中英

帶有mod_wsgi的Apache上的Django:設置上的ImportError

[英]Django on Apache with mod_wsgi: ImportError on settings

我正在使用mod_wsgi在Apache2服務器上提供Django站點。 這是mysite / mysite目錄的樣子:

(mysite_venv)➜  mysite  tree mysite -I "*.pyc"
    mysite
    ├── __init__.py
    ├── db.sqlite3
    ├── settings
    │   ├── __init__.py
    │   ├── base.py
    │   └── local.py
    ├── urls.py
    └── wsgi.py

當我使用python manage.py runmodwsgi運行該項目時,我在日志中收到內部服務器錯誤和以下消息:

[wsgi:error] [pid 8900] ImportError:         No module named mysite.settings.local
[mpm_prefork:notice] [pid 8898] AH00170: caught SIGWINCH, shutting down gracefully

這是我的manage.py的樣子:

import os
import sys

if __name__ == "__main__":
    os.environ.setdefault("DJANGO_SETTINGS_MODULE", "mysite.settings.local")

    from django.core.management import execute_from_command_line

    execute_from_command_line(sys.argv)

但是當我像這樣更改目錄mysite / mysite時:

(mysite_venv)➜  mysite  tree mysite -I "*.pyc"
mysite
├── __init__.py
├── base.py
├── db.sqlite3
├── local.py
├── urls.py
└── wsgi.py

並將代碼os.environ.setdefault("DJANGO_SETTINGS_MODULE", "mysite.settings.local")更改為os.environ.setdefault("DJANGO_SETTINGS_MODULE", "mysite.local")服務器運行正常! 如何解決此問題?

PS:當我使用python manage.py runserver運行該項目時,一切都還可以。

這是我的sys.path的樣子:

/Users/gagaxiaolong/PycharmProjects/mysite
/Users/gagaxiaolong/.virtualenvs/mysite_venv/lib/python27.zip
/Users/gagaxiaolong/.virtualenvs/mysite_venv/lib/python2.7
/Users/gagaxiaolong/.virtualenvs/mysite_venv/lib/python2.7/plat-darwin
/Users/gagaxiaolong/.virtualenvs/mysite_venv/lib/python2.7/plat-mac
/Users/gagaxiaolong/.virtualenvs/mysite_venv/lib/python2.7/plat-mac/lib-scriptpackages
/Users/gagaxiaolong/.virtualenvs/mysite_venv/Extras/lib/python
/Users/gagaxiaolong/.virtualenvs/mysite_venv/lib/python2.7/lib-tk
/Users/gagaxiaolong/.virtualenvs/mysite_venv/lib/python2.7/lib-old
/Users/gagaxiaolong/.virtualenvs/mysite_venv/lib/python2.7/lib-dynload
/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7
/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/plat-darwin
/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/lib-tk
/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/plat-mac
/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/plat-mac/lib-scriptpackages
/Users/gagaxiaolong/.virtualenvs/mysite_venv/lib/python2.7/site-packages
/Users/gagaxiaolong/.virtualenvs/mysite_venv/lib/python2.7/site-packages/IPython/extensions

9個月前有一個類似的問題: 如何調試配置Django與apache和mod-wsgi一起使用的基本問題? ,我嘗試了答案中提到的方法,但不起作用。

您需要在manage.py文件中檢查sys.path (為此使用pdb)。 我認為這是因為您具有這樣的目錄結構“ parent_dir / mysite / mysite / settings /”,並且您的sys.path具有條目“ parent_dir”。 因此系統正在嘗試在parent_dir/mysite找到settings模塊。 更改您的manage.py以進行調試

import os
import sys

if __name__ == "__main__":
    import ipdb; ipdb.set_trace()
    os.environ.setdefault("DJANGO_SETTINGS_MODULE", "mysite.settings.local")

    from django.core.management import execute_from_command_line

    execute_from_command_line(sys.argv)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM