【问题标题】:django wsgi.py cannot recognize settings filedjango wsgi.py 无法识别设置文件
【发布时间】:2017-01-04 12:48:52
【问题描述】:

尝试将apache2 配置为通过wsgi 为Django 项目提供服务时发生了一个奇怪的问题。

我的项目是在这里实现的一个小型待办事项列表。 https://github.com/panospet/toDoList

当apache尝试运行wsgi.py时,返回这个错误:

Traceback (most recent call last):
  File "/var/www/toDoList/myToDoList/wsgi.py", line 19, in <module>
    application = get_wsgi_application()
  File "/usr/local/lib/python2.7/dist-packages/django/core/wsgi.py", line 13, in get_wsgi_application
    django.setup(set_prefix=False)
  File "/usr/local/lib/python2.7/dist-packages/django/__init__.py", line 22, in setup
    configure_logging(settings.LOGGING_CONFIG, settings.LOGGING)
  File "/usr/local/lib/python2.7/dist-packages/django/conf/__init__.py", line 53, in __getattr__
    self._setup(name)
  File "/usr/local/lib/python2.7/dist-packages/django/conf/__init__.py", line 41, in _setup
    self._wrapped = Settings(settings_module)
  File "/usr/local/lib/python2.7/dist-packages/django/conf/__init__.py", line 97, in __init__
    mod = importlib.import_module(self.SETTINGS_MODULE)
  File "/usr/lib/python2.7/importlib/__init__.py", line 37, in import_module
    __import__(name)
ImportError: No module named myToDoList.settings

我的wsgi.py 文件是这样的:

import os
import sys

sys.path.append(' /var/www/toDoList')
sys.path.append(' /var/www/toDoList/myToDoList')

os.environ.setdefault("DJANGO_SETTINGS_MODULE", "myToDoList.settings")

from django.core.wsgi import get_wsgi_application
application = get_wsgi_application()

还有我在/etc/apache2/sites-enabled中的.conf文件:

<VirtualHost *:80>
    DocumentRoot "/var/www/toDoList"
    ServerName blahblah
    WSGIDaemonProcess todolist user=test group=test threads=5
    WSGIScriptAlias / /var/www/toDoList/myToDoList/wsgi.py
    <Location /todolist>
        WSGIProcessGroup todolist
    </Location>
    <Directory /var/www/toDoList/toDoList>
        Order allow,deny
        Allow from all
    </Directory>
    Alias /static /var/www/toDoList/myToDoList/static/
    <Directory /var/www/toDoList/myToDoList/static>
        Order allow,deny
        Allow from all
    </Directory>
    ErrorLog ${APACHE_LOG_DIR}/error.log
    LogLevel warn
    CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>

【问题讨论】:

    标签: python django apache mod-wsgi wsgi


    【解决方案1】:

    删除 sys.path.append 中的那个空间

    sys.path.append('/var/www/toDoList')
    sys.path.append('/var/www/toDoList/myToDoList')
    

    【讨论】:

      【解决方案2】:

      基于Django documentation 你错过了WSGIPythonPath

      WSGIPythonPath /var/www/toDoList
      

      此行确保您的项目包可用于在 Python 路径上导入;换句话说, import mysit 有效。

      【讨论】:

      • 将其添加到 WSGI 脚本文件中的sys.path 具有相同的目的。前提是它们不包括其他人指出的空格。
      猜你喜欢
      • 2013-05-16
      • 2017-06-08
      • 1970-01-01
      • 2011-03-12
      • 1970-01-01
      • 2020-06-18
      • 1970-01-01
      • 2020-11-24
      • 2015-06-25
      相关资源
      最近更新 更多