我试图运行一个填充脚本,我从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()
答案 0 :(得分:16)
您可以在os.environ.setdefault("DJANGO_SETTINGS_MODULE", "mysite.settings")
行之前插入django.setup()
。
答案 1 :(得分:10)
设置django.setup
环境变量后,应调用DJANGO_SETTINGS_MODULE
。只需在__main__
之后将其移至os.environ.setdefault
。
答案 2 :(得分:10)
如果您在终端中运行python
启动与Django的交互后遇到类似错误,则在相应目录中运行python manage.py shell
可能会解决您的问题。
答案 3 :(得分:1)
对于开发和调试,您可以使用standalone python软件包。
使用pip安装
pip install 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脚本运行。
答案 4 :(得分:0)
当我在非Django模块中使用与django相关的import语句时,发生在我身上。
即from index.views import view
确实为我带来了错误。
答案 5 :(得分:0)
设置环境时遇到了同样的问题。
(我尝试添加:
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "my_project.settings")
进入Django控制台中的“启动脚本窗口”或重写.wsgi文件,但所有操作均失败)
我的最终解决方案:(打开终端并手动设置环境)
以下是步骤:(对于Mac)
打开终端并输入vim〜/ .bash_profile
添加以下行:
PATH=${PATH}:/Users/work/workspace/[virtual_environment]/bin
PYTHONPATH=${PATH}:/Users/work/PycharmProjects/[project_name]
DJANGO_SETTINGS_MODULE=[project_name].settings
键入:wq保存并退出终端
键入源〜/ .bash_profile以重新加载它
这一次在您运行python manage.py
shell时可以使用。
答案 6 :(得分:0)
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'epl.settings')
应该在
上方import django
在导入和调用django安装程序之前,应该先调用django_settings_module。
希望这会有所帮助。
答案 7 :(得分:0)
如果您正在运行 PyCharm ,那么对我有用的是使缓存无效并重新启动应用。
File => Invalidate Caches / Restart ...
我的virtualenv最近已从Python 3.6或3.7更新到3.8。