2016-09-15 96 views
1

我在Python 3.5.2中使用Django 1.9.1,并且在运行使用Django模型的Python脚本时遇到问题。django.core.exceptions.ImproperlyConfigured:请求的设置DEFAULT_INDEX_TAB LESPACE,但设置未配置

C:\Users\admin\trailers>python load_from_api.py 
Traceback (most recent call last): 
    File "load_from_api.py", line 6, in <module> 
    from movies.models import Movie 
    File "C:\Users\admin\trailers\movies\models.py", line 5, in <module> 
    class Genre(models.Model): 
    File "C:\Users\admin\trailers\movies\models.py", line 6, in Genre 
    id = models.CharField(max_length=10, primary_key=True) 
    File "C:\Program Files (x86)\Python35-32\lib\site-packages\django\db\models\fi 
elds\__init__.py", line 1072, in __init__ 
    super(CharField, self).__init__(*args, **kwargs) 
    File "C:\Program Files (x86)\Python35-32\lib\site-packages\django\db\models\fi 
elds\__init__.py", line 166, in __init__ 
    self.db_tablespace = db_tablespace or settings.DEFAULT_INDEX_TABLESPACE 
    File "C:\Program Files (x86)\Python35-32\lib\site-packages\django\conf\__init_ 
_.py", line 55, in __getattr__ 
    self._setup(name) 
    File "C:\Program Files (x86)\Python35-32\lib\site-packages\django\conf\__init_ 
_.py", line 41, in _setup 
    % (desc, ENVIRONMENT_VARIABLE)) 
django.core.exceptions.ImproperlyConfigured: Requested setting DEFAULT_INDEX_TAB 
LESPACE, but settings are not configured. You must either define the environment 
variable DJANGO_SETTINGS_MODULE or call settings.configure() before accessing s 
ettings. 

这里的脚本:

#!/usr/bin/env python 
import os 
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "trailers.settings") 
os.environ["DJANGO_SETTINGS_MODULE"] = "trailers.settings" 
import django 
django.setup() 
import tmdbsimple as tmdb 
from movies.models import Movie 

#some code... 

我真的不能弄清楚什么是错的。任何帮助表示赞赏!

回答

1

我想出如何在不改变脚本来运行它,这就是由USI NG

python manag.py shell

然后

exec(open('filename').read())

,似乎工作得很好。

0

我会建议使用Django Custom Management Commands - 他们是非常简单的使用,他们使用你的设置,你的环境,你可以传递参数,你也可以写帮助字符串,所以你可以使用--help

然后你只需要调用它与./manage.py my_custom_command

或者,如果你只是想运行脚本将其添加到您的脚本

project_path = '/home/to/your/trailers/project/src' 
if project_path not in sys.path: 
    sys.path.append(project_path) 

os.environ.setdefault("DJANGO_SETTINGS_MODULE", "trailers.common") 

import django 
django.setup()