Django settings.py错误:不支持按文件名导入
我在一个虚拟环境中运行Django(使用virtualenv),现在想添加一个自定义的开发环境设置文件,这样在开发时可以更简单地配置应用。我的计划是用两行代码来实现这个。
if os.environ.get('DEVELOPMENT', None):
from login import settings_dev
我还尝试过 import settings_def
和 from login.settings_dev import *
。我的settings_dev.py文件和settings.py文件在同一个目录下,而我的应用在一个叫做login的文件夹里。当我运行 python login/manage.py syncdb
时,出现了这个错误:
Error: Import by filename is not supported.
我搜索时总是看到DJANGO_SETTINGS_MODULE(虽然我不太明白这和我的问题有什么关系 - 这是我第一个Django应用 :]),所以顺便说一下,它在我的settings.py文件中是这样设置的:
os.environ['DJANGO_SETTINGS_MODULE'] = 'login.settings'
我还尝试在终端中导出这个设置,但还是出现同样的错误。
有没有人知道我该怎么解决这个问题/我哪里做错了?
3 个回答
1
我在执行runserver命令时遇到了类似的错误,最后发现这个错误是因为我安装的Django版本和Python版本不兼容。我的电脑上有两个Python版本,而我却用错了那个版本来运行Django服务器。希望这个信息对某些人有帮助。
6
确保在传递文件的相对地址时,使用“.”而不是“/”。
我也遇到过同样的错误,实际上我做了这个:
"music/urls"
但正确的写法应该是:
"music.urls"
1
在原来的 settings.py
文件的最后:
try:
from settings_dev import *
except ImportError:
pass
在和 settings.py
同一个文件夹里创建一个 settings_dev.py
文件,然后在这个文件的最上面添加这两行:
import sys
globals().update(vars(sys.modules['settings']))
现在你可以在这个文件里添加你想要的开发设置了。