2016-03-21 7 views
0

I Testskript haben:kann nicht importiert django.apps innerhalb Skript

#!/usr/bin/env python 
# coding: utf-8 

import os, sys, subprocess, time, re 
from django.conf import settings 
from django.apps import apps 
import django 

django.setup() 

""" 
http://stackoverflow.com/questions/24027901/dynamically-loading-django-apps-at-runtime 
""" 

MAIN_IMPORTS = """\ 
from django.test import TestCase 
from model_mommy import mommy 

""" 

IMPORT_STATEMENT = """\ 
from clientsite.{app}.models import {models} 
""" 

TEST_BLOCK = """\ 
class {modelname}CreationTests(TestCase): 
    def setUp(self): 
     self.model = {modelname} 

    def test_create(self): 
     x = mommy.make(self.model) 
     x.save() 
     self.assertTrue(x.pk) 

    def test_factory_isinstance(self): 
     x = mommy.make(self.model) 
     self.assertTrue(isinstance(x, {modelname})) 
""" 

all_apps = apps.get_apps() 
all_models = apps.get_models() 
model_info = apps.all_models 

ich verwenden django.apps in meinem Skript in der Lage sein wollen. Das Skript befindet sich in einer App wie mysite/mommy_app/scripts/testtasm.py

I

versucht
cchilders:~/work_projects/mysite [ckc/fixture-replacements]$ ./manage.py mysite/mommy_models/scripts/testtasm.py 
Unknown command: 'mysite/mommy_models/scripts/testtasm.py' 

und sind gescheitert.

django.setup() auch fehlgeschlagen.

Wie kann ich Django-Funktionen in einem Skript verwenden, ohne Runserver auszuführen? Vielen Dank.

+0

Haben Sie versucht, es als normales Python-Skript auszuführen? – rnevius

Antwort

0

Sie nicht manage.py verwenden sollte Ihr Skript ausgeführt werden soll, es sei denn, Sie ein custom management command

erstellt haben Sie das Skript mit

python mysite/mommy_models/scripts/testtasm.py 

Oder, wenn das Skript

mysite/mommy_models/scripts/testtasm.py 
ausführbar ist

laufen soll

Im Skript müssen Sie vor dem Aufruf django.setup die Umgebungsvariable DJANGO_SETTINGS_MODULE festlegen. Möglicherweise müssen Sie auch Ihr Projektverzeichnis dem Python-Pfad hinzufügen.

import os 
import sys 
# This should be the directory that contains the directory containing settings.py 
sys.path.add('/path/to/mysite') 
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "mysite.settings") 

django.setup() 

# now you can import the settings and access them 
from django.conf import settings