【问题标题】:Django on Apache: ImportError on settingsApache 上的 Django:设置上的 ImportError
【发布时间】:2014-10-09 16:10:14
【问题描述】:

我正在使用虚拟主机在 Apache2 服务器上为几个 Django 站点提供服务。对于其中一个站点,我在日志中不断收到带有此消息的内部服务器错误:

[Thu Oct 09 15:11:24.597107 2014] [:error] [pid 8370:tid 140126138050304] [remote 128.30.86.202:15793] ImportError: 无法导入设置“calendar.settings”(是否在 sys.路径?设置文件中是否有导入错误?):没有名为设置的模块

这是我的calendar/ 目录的样子:

|-- calendar
|   |-- forms.py
|   |-- __init__.py
|   |-- models.py
|   |-- settings.py
|   `-- views.py
|-- manage.py
|-- urls.py
`-- wsgi.py

当我在错误日志中打印 sys.path 时,calendarcalendar/calendar 目录就在那里。

我已尝试直接运行wsgi.py 目录和calendar/settings.py,但没有收到任何导入错误。我尝试运行 manage.py shell 并再次没有导入错误。

我检查了/etc/apache2/apache2.conf 中的WSGIPythonPath 是否包含calendarcalendar/calendar 的完整路径。

我怀疑这是权限错误。目录中所有文件的所有者/组是ubuntu:ubuntu,其中ubuntu 是服务器上的用户名。所有者应该是谁,权限应该是什么?谢谢!

如果不是权限问题,是否有其他测试方法的想法?谢谢!

【问题讨论】:

  • 是的...不要给应用程序提供与项目相同的名称。 Django 有时会窒息。
  • 原来错误是因为它在查看应用程序之前在 Python 的日历库中查找设置。谢谢大家!
  • 很高兴你已经解决了这个问题。在自己的项目中使用现有 python 库的名称确实不是一个聪明的主意。

标签: python django apache


【解决方案1】:

将以下内容放入您的wsgi.py

import os
import sys

sys.path.append('/full/path/to/calendar/')
sys.path.append('/full/path/to/calendar/calendar')

os.environ["DJANGO_SETTINGS_MODULE"] = "calendar.settings"

最后一行实际上应该已经存在了。如果需要,请取消注释。如果有这样一行:

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

然后评论它。使用这些设置重试并告诉我们发生了什么。

/full/path/to 应该替换为您项目的完整路径,但这对您来说可能很明显。

【讨论】:

  • 感谢您的回复。我应该在前面放这个,但这几乎就是我的 wsgi.py 中的内容。关于还有什么可以尝试的想法?谢谢!
猜你喜欢
  • 2015-11-07
  • 1970-01-01
  • 1970-01-01
  • 2012-06-09
  • 2013-05-16
  • 2017-03-31
  • 1970-01-01
  • 2014-05-11
  • 1970-01-01
相关资源
最近更新 更多