报错描述
使用pycarm开发django程序,,如果不在django console测试程序,而是直接在终端或者文件夹下编写程序与数据库交互,出现如下报错。
Traceback (most recent call last):
File "E:/Users/Administrator/PycharmProjects/MyDjango/user_defined/wordsSplitTest.py", line 11, in <module>
from index.models import DgaCount
File "E:\Users\Administrator\PycharmProjects\MyDjango\index\models.py", line 12, in <module>
class DgaProject(models.Model):
File "E:\Users\Administrator\Anaconda3\envs\test3.6\lib\site-packages\django\db\models\base.py", line 87, in __new__
app_config = apps.get_containing_app_config(module)
File "E:\Users\Administrator\Anaconda3\envs\test3.6\lib\site-packages\django\apps\registry.py", line 249, in get_containing_app_config
self.check_apps_ready()
File "E:\Users\Administrator\Anaconda3\envs\test3.6\lib\site-packages\django\apps\registry.py", line 131, in check_apps_ready
settings.INSTALLED_APPS
File "E:\Users\Administrator\Anaconda3\envs\test3.6\lib\site-packages\django\conf\__init__.py", line 57, in __getattr__
self._setup(name)
File "E:\Users\Administrator\Anaconda3\envs\test3.6\lib\site-packages\django\conf\__init__.py", line 42, in _setup
% (desc, ENVIRONMENT_VARIABLE))
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.
报错分析
- 先看下的我的源代码。
这段代码是想统计数据库中‘dgaSum’这一列的所有数据和。
from django.db.models import Sum
import os
from index.models import DgaCount
def main():
d = DgaCount.dgaSum = DgaCount.objects.aggregate(Sum('dgaSum'))
print(d)
if __name__ =='__main__':
main()
- 为什么会出现上示错误呢?
当我引入modles时,是因为程序没有识别出database这个应用,虽然我已经把database应用添加到setting文件中了,但是还是需要在文件开头添加两行配置环境变量的配置语句,让程序知道该去哪儿寻找 models 中的文件。
解决方法
1
在文件头添加配置环境变量的语句,要特别主要添加顺序,以免出现不可预料的错误,搞的一头雾水。
from django.db.models import Sum
import os
import django
os.environ.setdefault('DJANGO_SETTING_MODULE', 'MyDjango.settings')
django.setup()
from index.models import DgaCount
def main():
d = DgaCount.dgaSum = DgaCount.objects.aggregate(Sum('dgaSum'))
print(d)
if __name__ =='__main__':
main()
此时发现报错信息发生变化:
File "E:\Users\Administrator\Anaconda3\envs\test3.6\lib\site-packages\django\conf\__init__.py", line 42, in _setup
% (desc, ENVIRONMENT_VARIABLE))
django.core.exceptions.ImproperlyConfigured: Requested setting LOGGING_CONFIG, but settings are not configured. You must either define the environment variable DJANGO_SETTINGS_MODULE or call settings.configure() before accessing settings.
2
将配置添加到pycharm中的python配置中
在环境变量(environment variables)这一栏添加如下信息:
此时去运行,完美解决!
**注意:**可以仔细看下看图中我标出的文件目录信息,根据自己的实际情况做修改,以便花最少的时间去解决。
本文大量参考:PyCharm中运行django程序 期间发现之前的方法不能解决我的问题,在原博主的基础上进行了一些修改得以解决,同时做了更详细的整理。在此感谢博主分享。