7 Stimmen

Verwendung des Django ORM in einem eigenständigen Skript (erneut)

Ich versuche, die Django ORM in einigen eigenständigen Bildschirm Scraping Skripte zu verwenden. Ich weiß, dass diese Frage schon einmal gestellt wurde, aber ich bin nicht in der Lage, eine gute Lösung für mein spezielles Problem herauszufinden.

Ich habe ein Django-Projekt mit definierten Modellen. Ich möchte diese Modelle und den ORM in meinem Scraping-Skript verwenden. Meine Verzeichnisstruktur ist in etwa so:

project
    scrape
        #scraping scripts
        ...
        test.py
    web
        django_project
            settings.py
            ...
            #Django files

Ich habe versucht, Folgendes in project/scrape/test.py :

print os.path.join(os.path.abspath('..'), 'web', 'django_project')
sys.path.append(os.path.join(os.path.abspath('..'), 'web', 'django_project'))
print sys.path
print "-------"
os.environ['DJANGO_SETTINGS_MODULE'] = 'django_project.settings'
#print os.environ
from django_project.myapp.models import MyModel
print MyModel.objects.count()

Ich erhalte jedoch eine ImportError wenn ich versuche, test.py auszuführen:

Traceback (most recent call last):
  File "test.py", line 12, in <module>
    from django_project.myapp.models import MyModel
ImportError: No module named django_project.myapp.models

Eine Lösung, die ich für dieses Problem gefunden habe, besteht darin, einen symbolischen Link zu ../web/govcheck im Scrape-Ordner:

:scrape rmanocha$ ln -s ../web/govcheck ./govcheck

Damit kann ich dann test.py problemlos ausführen. Dies scheint jedoch ein Hack zu sein und ist vor allem nicht sehr portabel (ich muss diesen symbolischen Link überall erstellen, wo ich diesen Code ausführe).

Ich frage mich also, ob jemand eine bessere Lösung für mein Problem hat?

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X