Ris*_*cha 7 django django-models
我试图在一些独立的屏幕抓取脚本中使用Django ORM.我知道之前已经问过这个问题,但是我无法找到解决我特定问题的好方法.
我有一个定义模型的Django项目.我想要做的是在我的抓取脚本中使用这些模型和ORM.我的目录结构是这样的:
project
scrape
#scraping scripts
...
test.py
web
django_project
settings.py
...
#Django files
Run Code Online (Sandbox Code Playgroud)
我尝试过以下方面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()
Run Code Online (Sandbox Code Playgroud)
但是,ImportError当我尝试运行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
Run Code Online (Sandbox Code Playgroud)
我发现这个问题的一个解决方案是../web/govcheck在scrape文件夹中创建一个符号链接:
:scrape rmanocha$ ln -s ../web/govcheck ./govcheck
Run Code Online (Sandbox Code Playgroud)
有了这个,我可以运行test.py就好了.然而,这似乎是一个黑客,更重要的是,不是非常便携(我将不得不在运行此代码的任何地方创建这个符号链接).
所以,我想知道是否有人对我的问题有更好的解决方案?
找到一种简单的方法来重用现有的django应用程序的控制台脚本设置:
from django.core.management import setup_environ
import settings
setup_environ(settings)
from myapp.models import Object
for o in Object.objects.all():
print o
Run Code Online (Sandbox Code Playgroud)
你确定它不应该是:
sys.path.append(os.path.join(os.path.abspath('..'), 'web'))
Run Code Online (Sandbox Code Playgroud)
另外,请确保 .txt 中有一个__init__.py文件(空即可)project/web/django_project。
PS 我建议将os.path.join的输出提供给os.path.abspath而不是其他方式。
| 归档时间: |
|
| 查看次数: |
5647 次 |
| 最近记录: |