【问题标题】:ImportError: Could not import settings... No module named settings?ImportError:无法导入设置...没有名为设置的模块?
【发布时间】:2018-05-21 21:59:40
【问题描述】:

我正在使用 Django 1.4 和 Python 2.7。

我以前遇到过这个问题,但是可以通过使用以下代码将父目录添加到 sys.path 来解决它:

import sys

def rtrim(s, sep):
    return sep.join(s.split(sep)[0:-1])

sys.path.insert(0, rtrim(sys.path[0], '/'))

from django.core.management import setup_environ
import settings

setup_environ(settings)

今天,它似乎不知从何而来,再次抬起了丑陋的脑袋。目录结构如下:

Ingest/
  settings.py
  ingest/ (current working directory)
    test.py

这里是 sys.path 和 Traceback 的一部分:

['/mnt/c/Users/Travis/Documents/GitHub/{redacted}/Ingest', '/mnt/c/Users/Travis/Documents/GitHub/{redacted}/Ingest/ingest', '/usr/lib/python2.7', '/usr/lib/python2.7/plat-x86_64-linux-gnu', '/usr/lib/python2.7/lib-tk', '/usr/lib/python2.7/lib-old', '/usr/lib/python2.7/lib-dynload', '/usr/local/lib/python2.7/dist-packages', '/usr/lib/python2.7/dist-packages']

Traceback (most recent call last):
  File "/usr/local/lib/python2.7/dist-packages/django/conf/__init__.py", line 95, in __init__
    raise ImportError("Could not import settings '%s' (Is it on sys.path?): %s" % (self.SETTINGS_MODULE, e))
ImportError: Could not import settings 'Ingest.settings' (Is it on sys.path?): No module named settings

如您所见,父目录在 sys.path 中。

【问题讨论】:

  • 你想完成什么?你能验证from django.conf import settings 是否有效吗?

标签: python django


【解决方案1】:

我仍然不确定为什么它最初工作了一个多月,然后似乎无缘无故地崩溃了,但经过几个小时的谷歌搜索后,我终于在这里找到了答案:https://stackoverflow.com/a/19741994/9343059

最后一个选项,如果你的 manage.py 和 settings.py 位于同一个 位置,将环境变量 DJANGO_SETTINGS_MODULE 更改为 设置而不是 myProject.settings,或运行 python manage.py --settings=设置参数

我可以通过替换来解决问题

from django.core.management import setup_environ
import settings

setup_environ(settings)

import os

os.environ['DJANGO_SETTINGS_MODULE'] = 'settings'

【讨论】:

    猜你喜欢
    • 2011-05-20
    • 1970-01-01
    • 1970-01-01
    • 2012-08-09
    • 1970-01-01
    • 1970-01-01
    • 2013-09-06
    • 2014-06-04
    • 1970-01-01
    相关资源
    最近更新 更多