2016-09-15 35 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()