无法在Python / Django中导入文件

时间:2009-09-14 00:34:58

标签: python django

我不确定发生了什么,但在我自己的笔记本电脑上,一切正常。当我使用Python 2.3.5上传到我的主机时,我的views.py在models.py中找不到任何内容。我有:

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

我的models,item_list和views文件位于/ mysite / dtms /

最终告诉我它无法找到用户。有什么想法吗?

另外,当我使用django shell时,我可以“从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']

我不完全确定这意味着什么 - 我的文件是在mysite / dtms / item_list.py中。这是否意味着它正在加载?我看到dtms模块正在加载,但它仍然无法找到dtms.models

4 个答案:

答案 0 :(得分:4)

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

之类的。这通常会很快告诉你,你的sys.path不是你想象的那样,而且/或者是在某个奇怪的地方或者有奇怪的路径等等。

答案 1 :(得分:2)

要检查你的sys.path你可以做Alex所说的,但不是使用print,你可以使用日志记录模块:


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')

答案 2 :(得分:0)

确保您的项目(或“dtms”应用上方的文件夹)位于python module search path中。

您可能需要在Web服务器的配置中进行设置。它在django shell中工作的原因可能是因为你运行shell时你在项目的文件夹中。

如果您正在使用带有mod_python的apache,则会解释here

答案 3 :(得分: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上,但您可能已经知道了。

相关问题