场景是:在 test.py 这个独立的测试脚本中要使用 django 项目的模型类。
我看别人博客使用这种方式导入的:
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'blog.settings') import django django.setup() import blog.models
在 test.py 脚本中直接导入项目的模型类,因为 models 不在 test.py 的工作目录下,不应该是设置环境变量 PYTHONPATH,把 models 模块路径添加到 sys.path 搜索路径下吗?
那上面设置 DJANGO_SETTINGS_MODULE 环境变量,然后 django.setup() 有什么用? 是使用 django 从 DJANGO_SETTINGS_MODULE 环境变量中加载配置启动 app,内部把所有用到模块加载到内存,因此就可以直接使用 blog.models 导入是吗?本质是使用 test.py 文件替代了 manage.py 文件作为项目的入口启动文件是吗?
那为什么使用 celery 时只设置环境变量不用 django.setup()?