J'essaie d'utiliser l'ORM de Django dans des scripts autonomes de scraping d'écran scripts. Je sais que cette question a déjà été posée, mais je ne parviens pas à trouver une bonne solution pour mon problème particulier.
J'ai un projet Django avec des modèles définis. Ce que je voudrais faire, c'est utiliser ces modèles et l'ORM dans mon script de scraping. Ma structure de répertoire est quelque chose comme ceci :
project
scrape
#scraping scripts
...
test.py
web
django_project
settings.py
...
#Django files
J'ai essayé de faire ce qui suit dans 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()
Cependant, je reçois un ImportError
lorsque j'essaie d'exécuter 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
Une solution que j'ai trouvée pour contourner ce problème est de créer un lien symbolique vers ../web/govcheck
dans le dossier de scrape :
:scrape rmanocha$ ln -s ../web/govcheck ./govcheck
Avec cela, je peux exécuter test.py sans problème. Cependant, cela ressemble à un hack, et plus important encore, ce n'est pas très portable (je vais devoir créer ce lien symbolique partout où j'exécute ce code).
Donc, je me demandais si quelqu'un avait une meilleure solution à mon problème ?