2013-05-05 29 views
4

我在嘗試在我的Django應用程序中運行腳本時出現導入錯誤。ImportError:無法導入設置。它在路上嗎?

它與設置文件有關。

錯誤:

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

你或許應該是在哪裏你bookda/settings.py文件所在的文件中層次結構。 – 2013-05-05 08:43:06

+0

我已經說明了層次結構。 – Hick 2013-05-05 08:44:01

+0

書中應該還有一個'__init __。py'文件(以及bookda/books)。 – 2013-05-05 09:52:22

回答

3

這可能是因爲你的settings.py有語法錯誤或其他錯誤,這意味着它無法執行。在某些情況下會導致導入錯誤。

import pdb;pdb.set_trace()放在文件中,然後您可以對其進行調試。如果它沒有進入調試器,那麼Python確實沒有找到該文件。

6

如果您正在嘗試編寫使用您的Django模型的自定義腳本,則需要確保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 
... 
+0

這次錯誤更改爲:ImportError:無法導入設置,因爲環境變量DJANGO_SETTINGS_MODULE未定義。 – Hick 2013-05-05 08:45:43

+0

@Hick查看更新的答案。 – Aya 2013-05-05 08:47:38

+0

好的!我應該在哪裏放置該代碼?在我的get_data.py腳本中使用更新後的答案後,它仍會繼續出現相同的錯誤 – Hick 2013-05-05 08:49:12

相關問題