我不确定发生了什么,但在我自己的笔记本电脑上,一切正常。当我使用 Python 2.3.5 上传到主机时,views.py 在 models.py 中找不到任何内容。我有:
from dtms.models import User
from dtms.item_list import *
Run Code Online (Sandbox Code Playgroud)
我的模型、item_list 和视图文件位于 /mysite/dtms/
它最终告诉我它找不到用户。有任何想法吗?
另外,当我使用 django shell 时,我可以执行“from dtms.models import *”并且它工作得很好。
好的,在执行以下建议后,我得到一个日志文件:
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']
Run Code Online (Sandbox Code Playgroud)
我不完全确定这意味着什么 - 我的文件位于 mysite/dtms/item_list.py 中。这是否意味着它正在加载?我看到 dtms 模块正在加载,但仍然找不到 dtms.models
有效的事实from X import *并不能保证它from X import Wowie也会有效,你知道(如果你能戒掉这种import *瘾,从长远来看你会更快乐,但是,这是另一个问题;-)。
我对导入问题的一般建议是将有问题的导入用 try/ except 括起来:
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
Run Code Online (Sandbox Code Playgroud)
等等。这通常很快就会告诉你你的 sys.path 不是你想象的那样,和/或废话是在一些奇怪的地方或奇怪的路径,等等。