有时候需要在 Django 项目中单独运行某个 Python 文件来测试系统、初始化数据库等等操作。
例如博主在 PyCharm 中 Django 项目根下新建了一个 utils Python 工具包,用来将 json 文件内的数据通过 load_data.py 加载 Django 模型写入到 MySQL 数据库中,如果单独在 PyCharm 右上角配置运行这个 load_data.py 文件时,就会抛出如下异常:
django.core.exceptions.ImproperlyConfigured: Requested setting INSTALLED_APPS, but settings are not configured. You must either define the environment variable DJANGO_SETTINGS_MODULE or call settings.configure() before accessing settings.
按照错误信息提示,具体报错代码是在本 Python 文件当中调用了某个子应用下的一个模型类,既然调用了 Django 中的模型,那么就需要设置 DJANGO_SETTINGS_MODULE
环境变量,以查找 settings.py 文件路径。
而在 PyCharm 中配置 DJANGO_SETTINGS_MODULE
环境变量有如下两种方式:
1.在需要运行的 Python 文件中开始部分加入如下配置代码 (必须放在加载 Django 模型代码之前):
import os
import django
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'your_project.settings')
django.setup()
如果没有加上 django.setup()
的话,程序就会抛出如下异常:
django.core.exceptions.AppRegistryNotReady: Apps aren't loaded yet.
表示 Django 项目的 app 还没有被加载,所以必须添加上述代码。
2.另外在 PyCharm 中还有一种配置环境变量的方式:
配置完后,django.setup()
还是必须加上的。