Django settings.py错误:不支持按文件名导入

3 投票
3 回答
10247 浏览
提问于 2025-04-17 09:29

我在一个虚拟环境中运行Django(使用virtualenv),现在想添加一个自定义的开发环境设置文件,这样在开发时可以更简单地配置应用。我的计划是用两行代码来实现这个。

if os.environ.get('DEVELOPMENT', None):
    from login import settings_dev

我还尝试过 import settings_deffrom 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']))

现在你可以在这个文件里添加你想要的开发设置了。

撰写回答