当我尝试在我的Django应用程序中运行脚本时出现导入错误。
它与设置文件有关。
错误:
File "bookd/get_data.py", line 10, in <module>
from models import UserProfile
File "/home/hiccup/DataProjects/goodread/bookda/bookd/models.py", line 3, in <module>
from django.db import models
File "/usr/local/lib/python2.7/dist-packages/django/db/__init__.py", line 14, in <module>
if not settings.DATABASES:
File "/usr/local/lib/python2.7/dist-packages/django/utils/functional.py", line 276, in __getattr__
self._setup()
File "/usr/local/lib/python2.7/dist-packages/django/conf/__init__.py", line 42, in _setup
self._wrapped = Settings(settings_module)
File "/usr/local/lib/python2.7/dist-packages/django/conf/__init__.py", line 89, in __init__
raise ImportError("Could not import settings '%s' (Is it on sys.path?): %s" % (self.SETTINGS_MODULE, e))
ImportError: Could not import settings 'bookda.settings' (Is it on sys.path?): No module named bookda.settings
我知道它是一个非常基本的错误,并且已经有解决它的答案,但我无法解决它,无论我尝试添加设置工作路径的方式。令我非常沮丧的是,我系统上的其他django应用程序运行得非常好。
层次结构:
bookda/settings.py
bookda/books/script.py
我在运行script.py时遇到错误。
答案 0 :(得分:6)
如果您正在尝试编写使用Django模型的自定义脚本[s],则需要确保Django可以找到您的项目包。将它放在脚本get_data.py
...
import sys
sys.path.append('/home/hiccup/DataProjects/goodread')
...然后它应该能够导入bookda
模块。
您可能还需要告诉Django设置文件的位置,在这种情况下您需要...
import sys
import os
sys.path.append('/home/hiccup/DataProjects/goodread')
os.environ['DJANGO_SETTINGS_MODULE'] = 'bookda.settings'
# Now we can import Django stuff
from models import UserProfile
...
答案 1 :(得分:3)
可能是你的settings.py有语法错误或其他错误,这意味着它无法执行。在某些情况下会导致导入错误。
首先将import pdb;pdb.set_trace()
放入文件中,然后进行调试。如果它没有进入调试器,那么Python确实找不到该文件。