Django settings module not found
背景
  
我正试图按照这些说明按环境拆分设置。
现在我只想这样运行我的测试命令:
| 1 | ./run ./manage.py test --settings=bx.settings.local | 
当前的下一行
| 1 | os.environ.setdefault("DJANGO_SETTINGS_MODULE","bx.settings") | 
在这些文件中可用
| 1 2 | manage.py wsgi.py | 
所以我删除了它(因为它应该从命令行中读取)。
我还在我的
| 1 2 3 | __init__.py base.py local.py | 
对它。
笔记注:
| 1 2 3 4 5 6 7 8 9 | #!/usr/bin/env bash DIR="$( cd"$( dirname"${BASH_SOURCE[0]}" )" && pwd )" docker run \ --env"PATH=/beneple/venv/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin" \ --link beneple_db:db \ -v $DIR:/beneple \ -t -i --rm \ beneple/beneple \ $@ | 
问题
当我运行命令时
| 1 | ./run ./manage.py test --settings=bx.settings.local | 
我得到这个错误
| 1 2 3 |   File"/beneple/bx/org/serializers.py", line 10, in <module> from bx.settings import DOMAIN ImportError: cannot import name DOMAIN | 
在序列化程序中。Py:10,我们得到了这个。
| 1 | from bx.settings import DOMAIN | 
所以我用
| 1 2 | from django.conf import settings from settings import DOMAIN | 
相反,我得到了这个错误:
| 1 2 3 |   File"/beneple/bx/org/serializers.py", line 12, in <module> from settings import DOMAIN ImportError: No module named settings | 
调试
奇怪的是,如果我在
| 1 2 3 4 | ipdb> print(settings) <Settings"bx.settings.local"> ipdb> settings.DOMAIN 'http://localhost:8000' | 
我很困惑为什么它不能将这里的设置识别为一个模块?
更新我注意到我的模板目录改变了。在我的设置文件中
| 1 2 3 4 | BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) .. TEMPLATES = [{ 'DIRS': [os.path.join(BASE_DIR, 'templates')],.. | 
然而,注意旧路和新路之间的
老路:
| 1 2 | os.environ.setdefault("DJANGO_SETTINGS_MODULE","bx.settings") ['/beneple/templates'] | 
新方法:
| 1 2 | ./run ./manage.py test --settings=bx.settings.local ['/beneple/bx/templates'] | 
为什么会这样?我如何(以编程方式)使新方法输出与旧方法相同的结果?
从
您可以执行以下操作: