Ich versuche, das Django ORM in einigen eigenständigen Screen Scraping-Skripten 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 zu finden.Verwenden Sie das Django ORM in einem eigenständigen Skript (wieder)
Ich habe ein Django-Projekt mit definierten Modellen. Ich möchte diese Modelle und das ORM in meinem Scraping-Skript verwenden. Meine Verzeichnisstruktur ist so etwas wie dieses:
project
scrape
#scraping scripts
...
test.py
web
django_project
settings.py
...
#Django files
ich nach dem in project/scrape/test.py
versuchte dabei:
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()
Allerdings habe ich eine ImportError
, wenn ich versuche zu laufen test.py:
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 um dieses Problem gefunden habe, ist eine symbolische Verbindung zu ../web/govcheck
in dem Scrape-Ordner zu erstellen:
:scrape rmanocha$ ln -s ../web/govcheck ./govcheck
Mit diesem kann ich test.py dann gut laufen lassen. Dies scheint jedoch ein Hack zu sein und, was noch wichtiger ist, ist nicht sehr portabel (ich muss diesen symbolischen Link überall dort erstellen, wo ich diesen Code ausführe).
Also fragte ich mich, ob jemand bessere Lösungen für mein Problem hat?
Danke - das funktioniert. –