django.core.exceptions.ImproperlyConfigured:请求设置LOGGING_CONFIG,但未配置设置

jrcvhitl  于 2022-12-27  发布在  Go
关注(0)|答案(9)|浏览(236)

我正在尝试运行一个填充脚本,这个脚本是我从tango_with_django教程(https://github.com/leifos/tango_with_django/blob/master/tango_with_django_project/populate_rango.py)中整理出来的,但是我得到了下面的回溯,它似乎与Django 1.7中所做的更改有关?如果有人能解释一下我在这里做错了什么,我将不胜感激。

(test_env) C:\Users\WriteCode\test_env\epl>python populate_clubs.py
Traceback (most recent call last):
  File "populate_clubs.py", line 4, in <module>
    django.setup()
  File "c:\Python27\lib\site-packages\django\__init__.py", line 20, in setup
    configure_logging(settings.LOGGING_CONFIG, settings.LOGGING)
  File "c:\Python27\lib\site-packages\django\conf\__init__.py", line 46, in __ge
tattr__
    self._setup(name)
  File "c:\Python27\lib\site-packages\django\conf\__init__.py", line 40, in _set
up
    % (desc, ENVIRONMENT_VARIABLE))
django.core.exceptions.ImproperlyConfigured: Requested setting LOGGING_CONFIG, b
ut settings are not configured. You must either define the environment variable
DJANGO_SETTINGS_MODULE or call settings.configure() before accessing settings.

(test_env) C:\Users\WriteCode\test_env\epl>

我的populate_clubs.py脚本

import os
import sys
import django
django.setup()

def add_club(name, nickname, manager, established, stadium, active=True):
    c = clubs.objects.get_or_create(name=name, nickname=nickname, manager=manager, established=established, stadium=stadium, active=active)
    return c

def populate():
    add_club(name = "Aston Villa",
        nickname = "Villans",
        manager = "Tim Sherwood",
        established = "1897",
        stadium = "Villa Park"
        )

    # Print out what was added
    for c in clubs.objects.all():
        print "The following has been added to clubs:" + c


# Start execution
if __name__ == '__main__':
    print "Starting club population script..."
    os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'epl.settings')
    from teams.models import clubs
    populate()
htzpubme

htzpubme1#

您可以在django.setup()行之前插入os.environ.setdefault("DJANGO_SETTINGS_MODULE", "mysite.settings")

gupuwyp2

gupuwyp22#

django.setup()的调用应该在设置DJANGO_SETTINGS_MODULE环境变量之后进行。只需将它移到os.environ.setdefault()之后的__main__中。

mrfwxfqh

mrfwxfqh3#

如果您在终端中运行python启动与Django的交互后遇到类似的错误,那么在适当的目录中运行python manage.py shell可能会解决您的问题。

owfi6suc

owfi6suc4#

对于开发和调试,您可以使用standalone python包。
与管一起安装

pip install standalone

使用standalone可以从模块中使用Django。

# add the following to the top of the module.
import standalone
standalone.run('mysite.settings') # replace with your settings module.

# your code goes below the configuration
import os
import sys

# ... .. .  whole module

现在您可以将模块作为Python Django脚本运行。

ao218c7q

ao218c7q5#

os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'epl.settings')

应高于

import django

也就是在导入和调用django安装程序之前,你应该调用django_settings_module。
希望这是有帮助的。

oyt4ldly

oyt4ldly6#

如果你运行的是PyCharm,对我来说,有效的方法是该高速缓存无效并重新启动应用。
第一个月
我的virtualenv最近从Python 3.6或3.7更新到了3.8。

y3bcpkx1

y3bcpkx17#

当我在一个非django模块中使用django相关的import语句时,我遇到了这种情况。
from index.views import view,它确实为我引发了一个错误。

1qczuiv0

1qczuiv08#

我在设置环境时遇到了同样的问题。
(我试着补充:

os.environ.setdefault("DJANGO_SETTINGS_MODULE", "my_project.settings")

进入“启动脚本窗口”,这是在Django控制台或重写.wsgi文件,但所有这些都失败了)
我的最终解决方案:(打开终端,手动设置环境)
步骤如下:(对于mac)
1.打开终端并键入vim ~/.bash_profile
1.添加以下行:

PATH=${PATH}:/Users/work/workspace/[virtual_environment]/bin
 PYTHONPATH=${PATH}:/Users/work/PycharmProjects/[project_name]
 DJANGO_SETTINGS_MODULE=[project_name].settings

1.键入:wq保存并退出终端
1.键入source ~/.bash_profile以重新加载它
当您运行python manage.pyshell时,它将工作。

pod7payv

pod7payv9#

确保首先通过scripts/activate venv激活venv,然后在populate_user.py中 import os run os.environ.setdefault('DJANGO_SETTINGS_MODULE','epl. settings') 之后激活venv,这应该可以工作。

相关问题