2009-09-14 92 views
0

我不確定發生了什麼,但在我自己的筆記本電腦上,一切正常。當我用Python 2.3.5上傳到我的主機時,我的views.py在我的models.py中找不到任何東西。我有:無法在Python/Django中導入文件

from dtms.models import User 
from dtms.item_list import * 

在我的模型,item_list和視圖文件在/ mysite的/的DTM/

它結束了,告訴我它無法找到用戶。有任何想法嗎?另外,當我使用django shell時,我可以做「從dtms.models導入*」,它工作得很好。

好了,下面做的建議後,我得到的日誌文件:

syspath = ['/home/victor/django/django_projects', '/home/victor/django/django_projects/mysite'] 
DEBUG:root:something <module 'dtms' from '/home/victor/django/django_projects/mysite/dtms/__init__.pyc'> 
DEBUG:root:/home/victor/django/django_projects/mysite/dtms/__init__.pyc 
DEBUG:root:['/home/victor/django/django_projects/mysite/dtms'] 

我不完全知道這意味着什麼 - 我的文件是在mysite的/的DTM/item_list.py。這是否意味着它被加載?我看到dtms模塊正在加載,但它仍然無法找到dtms.models

+0

好了,所以我的模型之一被定義爲: 類Item_list(): 等等等等 當我做這個,在我的筆記本電腦上,python2.5能夠做到: from dtms.item_list import Item_list 當我拿出Item_list後面的(),因爲python2.4的兼容性問題,那行不能在python2中工作0.5。在python2.4上可以做些什麼? – victor 2009-09-14 05:00:30

回答

4

from X import *作品並不保證from X import Wowie將工作過,你知道(如果你能戒掉自己從import *癮遠你會從長遠來看WAY快樂,但事實上,這是另一個問題;-) 。

我的進口問題的一般建議是使用try /含蓋該問題的進口情況除外:

try: 
    from blah import bluh 
except ImportError, e: 
    import sys 
    print 'Import error:', e 
    print 'sys.path:', sys.path 
    blah = __import__('blah') 
    print 'blah is %r' % blah 
    try: 
    print 'blah is at %s (%s)' % (blah.__file__, blah.__path__) 
    except Exception, e: 
    print 'Cannot give details on blah (%s)' % e 

等。這通常表明你很快就知道你的sys.path不是你認爲的那樣,並且/或者是在某個奇怪的地方或者奇怪的路徑等等。

+0

你知道我在fastcgi設置上運行django時如何能夠得到這個輸出嗎?我不知道它會在哪裏打印任何內容。 – victor 2009-09-14 03:35:41

0

確保您的項目(或「dtms」應用程序上方的文件夾)位於python的module search path中。

這是您可能需要在Web服務器配置中設置的內容。它在django shell中工作的原因可能是因爲在運行shell時,你在項目的文件夾中。

這是解釋here如果您使用Apache與mod_python。

+0

/mysite在那裏。它遞歸搜索,對吧? – victor 2009-09-14 00:40:44

+0

你沒有任何特殊的本地配置設置嗎? (例如由settings.py調用的「local_settings.py」) – Fragsworth 2009-09-14 00:43:11

+0

我目前使用FastCGI。我的python路徑包含我的django_projects文件夾,它也包含/ mysite/dtms。 – victor 2009-09-14 00:43:54

0

我可能會離開這個,但你設置了DJANGO_SETTINGS_MODULE環境變量嗎?它影響您​​可以導入的內容。將其設置爲「.settings」。當你啓動manage.py時,它也會被設置,所以事情在那裏工作,在事先設置變量的其他情況下不起作用。

這就是我做我的系統上:

export DJANGO_SETTINGS_MODULE=<project name>.settings 

import os 
os.environ['DJANGO_SETTINGS_MODULE']='<project name>.settings' 

很抱歉,如果這忽略了一點,但是當我聽到的問題進口models.py,我馬上環境的事變量。此外,項目目錄必須在PYTHONPATH上,但您可能已經知道了。

+0

nope,它的設置正確。 – victor 2009-09-14 05:03:34

2

檢查你的系統。路徑,你可以做什麼亞歷克斯說,但不是使用打印您可以使用日誌模塊:


import logging 
LOG_FILENAME = '/tmp/logging_example.out' 
logging.basicConfig(filename=LOG_FILENAME,level=logging.DEBUG,) 

logging.debug('This message should go to the log file')