2013-01-23 60 views
4

所以我設置了在Ubuntu上安裝了一切的virtualenv,並得到了與runserver運行網站的發展。我所有的單元測試都通過了,但是許多Django包的單元測試沒有通過。有一個導入錯誤一下子

於是,我試着做git bisect摸不着頭腦,檢查出我做了非常早的提交。在開發環境使用不同的數據庫引擎,軟件包等的時候,我的歷史還爲時過早,當然網站無法運行。然後,我決定處理比失敗的Django單元測試更重要的事情(因爲我自己正在工作),所以我回到開發分支中的最新提交。

我解僱了runserver一遍,但這次,當我重新加載網頁,我遇到了錯誤:

Traceback: 
File "...venv.../local/lib/python2.7/site-packages/django/core/handlers/base.py" in get_response 
    101.        request.path_info) 
File "...venv.../local/lib/python2.7/site-packages/django/core/urlresolvers.py" in resolve 
    298.    for pattern in self.url_patterns: 
File "...venv.../local/lib/python2.7/site-packages/django/core/urlresolvers.py" in url_patterns 
    328.   patterns = getattr(self.urlconf_module, "urlpatterns", self.urlconf_module) 
File "...venv.../local/lib/python2.7/site-packages/django/core/urlresolvers.py" in urlconf_module 
    323.    self._urlconf_module = import_module(self.urlconf_name) 
File "...venv.../local/lib/python2.7/site-packages/django/utils/importlib.py" in import_module 
    35.  __import__(name) 
File "...project dir.../myproject/urls.py" in <module> 
    2. import frontpage.views 

Exception Type: ImportError at/
Exception Value: No module named views 

一切工作只是罰款之前,我嘗試了混帳平分。但是,至少在我的本地機器上,再也沒有。

所以我搜索了一下,並將ROOT_URLCONF'myproject.urls'更改爲'urls'。現在,我得到這個錯誤信息:

Traceback: 
File "...venv.../local/lib/python2.7/site-packages/django/core/handlers/base.py" in get_response 
    101.        request.path_info) 
File "...venv.../local/lib/python2.7/site-packages/django/core/urlresolvers.py" in resolve 
    298.    for pattern in self.url_patterns: 
File "...venv.../local/lib/python2.7/site-packages/django/core/urlresolvers.py" in url_patterns 
    328.   patterns = getattr(self.urlconf_module, "urlpatterns", self.urlconf_module) 
File "...venv.../local/lib/python2.7/site-packages/django/core/urlresolvers.py" in urlconf_module 
    323.    self._urlconf_module = import_module(self.urlconf_name) 
File "...venv.../local/lib/python2.7/site-packages/django/utils/importlib.py" in import_module 
    35.  __import__(name) 

Exception Type: ImportError at/
Exception Value: No module named urls 

我一派更多一些,並想也許我的Python路徑沒有包括我的項目目錄...但沒有,它完全不會,當我包括在我settings.py文件print sys.path爲該項目!

那麼這裏有什麼問題?我正在使用Django 1.4.3,並使用python manage.py runserver啓動服務器。我發誓我的網站在幾個小時前就開始工作了,我已經完成了git checkout developmentgit reset多次......我嘗試刪除virtualenv,重新創建它,並重新安裝所有Python軟件包。我仍然遇到同樣的錯誤。

(另外,我做了激活的virtualenv,我甚至試過重啓,以防萬一......至今沒有運氣)

UPDATE

繼倫納特的建議下,我開始了調試器,然後發現import frontpage有效,但不是import frontpage.views,frontpage.tests或其他任何東西。我在frontpage目錄中也有一個__init__.py文件。在這一點上,sys.path包含我的項目文件夾好吧...

我已經在我的INSTALLED_APPS也包括frontpage

FIXED

感謝倫納特,我檢查了frontpage模塊確實得到正確導入。顯示正確的.pyc文件,但這讓我懷疑pyc文件是否與我的實際代碼不同步。

所以我刪除了所有PYC文件,重新啓動服務器,一切都再一次工作正常:)

回答

3

有時因爲模塊嘗試導入遇到一些問題,你ImportErrors。例如,可能frontpage.view正在嘗試導入具有SyntaxError的模塊。找出究竟發生了什麼的最佳方法是在導入失敗之前放置一個import pdb;pdb.set_trace(),並在導入內部嘗試s tep。

還要確保當您導入frontpage時,您將獲得預期的模塊,請特別檢查模塊__file__屬性,並確保它是您所期望的__init__.pyc

+0

我已經更新了我的問題,並不確定要試試看下一個。有任何想法嗎? – wrongusername

+0

和我的網站以前工作,並仍在開發服務器上工作,具有相同的確切代碼。我再次檢查過這個文件;沒有檢測到語法錯誤。 – wrongusername

+0

@wrongusername:更新的答案 –

相關問題