当我试图将应用程序投入生产时,我遇到了一些错误,我真的很困惑。在开发机器上一切正常,但我无法同步数据库或在生产服务器上输入 Django shell。当 forum.models.py 尝试导入 forum.managers.py 时出现错误,因为模型尚未在命名空间中。
我认为这可能是一个 PYTHONPATH 问题,但它有一个奇怪的鸡或蛋方面。我不明白为什么 TagManager 不在 NameSpace 中。
TagManager 通过以下方式导入:
from forum.managers import *
在调用 TagManager 类之前执行。
$ python2.5 manage.py syncdb
Traceback(最近一次调用最后):
文件“manage.py”,第11行,在
execute_manager(设置)
文件“/home/app_name/webapps/app_name/lib/python2.5/django/ core/management/ init .py”,第 362 行,execute_manager
utility.execute()
文件“/home/app_name/webapps/app_name/lib/python2.5/django/core/management/init .py ”,第 303 行,在 run_from_argv 中执行
self.fetch_command(subcommand).run_from_argv(self.argv)
文件“/home/app_name/webapps/app_name/lib/python2.5/django/core/management/base.py”,第 195 行
。执行(*args,** options.dict)
文件“/home/app_name/webapps/app_name/lib/python2.5/django/core/management/base.py”,第 221 行,在执行
self.validate()
文件“/home/app_name/webapps/app_name/lib /python2.5/django/core/management/base.py”,第 249 行,在 validate
num_errors = get_validation_errors(s, app)
文件“/home/app_name/webapps/app_name/lib/python2.5/django/core/ management/validation.py”,第 28 行,在 get_validation_errors
for (app_name, error) in get_app_errors().items():
文件“/home/app_name/webapps/app_name/lib/python2.5/django/db/models/ loading.py”,第 131 行,get_app_errors
self._populate()
文件“/home/app_name/webapps/app_name/lib/python2.5/django/db/models/loading.py”,第 58 行,_populate
self.load_app(app_name, True)
File "/home/app_name/webapps/app_name/lib/python2.5/django/db/models/loading.py",第 74 行,在 load_app
models = import_module('.models', app_name)
文件“/home/app_name/webapps/app_name/lib/python2.5/django/utils/importlib.py”,第 35 行,在 import_module
导入(名称)
文件“/home/app_name/webapps/app_name/django_app/ ../django_app/forum/models.py”,第 18 行,
从 forum.managers 导入 *
文件“/home/app_name/webapps/app_name/django_app/forum/managers.py”,第 6 行,
从 forum.models导入 *
文件“/home/app_name/webapps/app_name/django_app/../django_app/forum/models.py”,第 43 行,在
类 Tag(models.模型):
文件“/home/app_name/webapps/app_name/django_app/../django_app/forum/models.py”,第 53 行,标签
对象 = TagManager()
NameError: name 'TagManager' is not defined
Python 2.5.4 (r254:67916, Aug 5 2009, 12:42:40)
[GCC 4.1.2 20080704 (Red Hat 4.1.2-44)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import os
>>> os.environ['DJANGO_SETTINGS_MODULE'] = 'django_app.settings'
>>>
>>> import sys
>>> import pprint
>>> pprint.pprint(sys.path)
['',
'/home/app_name/webapps/app_name/lib/python2.5',
'/home/app_name/lib/python2.5/markdown2-1.0.1.16-py2.5.egg',
'/home/app_name/lib/python2.5/html5lib-0.11.1-py2.5.egg',
'/home/app_name/lib/python2.5',
'/usr/local/lib/python25.zip',
'/usr/local/lib/python2.5',
'/usr/local/lib/python2.5/plat-linux2',
'/usr/local/lib/python2.5/lib-tk',
'/usr/local/lib/python2.5/lib-dynload',
'/usr/local/lib/python2.5/site-packages',
'/usr/local/lib/python2.5/site-packages/PIL']
>>> sys.path = ['/home/app_name/webapps/app_name/django_app','/home/app_name/webapps/app_name','/home/app_name/webapps/app_name/lib/python2.5'] + sys.path
>>> pprint.pprint(sys.path)['/home/app_name/webapps/app_name/django_app',
'/home/app_name/webapps/app_name',
'/home/app_name/webapps/app_name/lib/python2.5',
'',
'/home/app_name/webapps/app_name/lib/python2.5',
'/home/app_name/lib/python2.5/markdown2-1.0.1.16-py2.5.egg',
'/home/app_name/lib/python2.5/html5lib-0.11.1-py2.5.egg',
'/home/app_name/lib/python2.5',
'/usr/local/lib/python25.zip',
'/usr/local/lib/python2.5',
'/usr/local/lib/python2.5/plat-linux2',
'/usr/local/lib/python2.5/lib-tk',
'/usr/local/lib/python2.5/lib-dynload',
'/usr/local/lib/python2.5/site-packages',
'/usr/local/lib/python2.5/site-packages/PIL']
>>> from forum.managers import *
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/home/app_name/webapps/app_name/django_app/forum/managers.py", line 6, in <module>
from forum.models import *
File "/home/app_name/webapps/app_name/django_app/../django_app/forum/models.py", line 43, in <module>
class Tag(models.Model):
File "/home/app_name/webapps/app_name/django_app/../django_app/forum/models.py", line 53, in Tag
objects = TagManager()
NameError: name 'TagManager' is not defined
>>> from forum.models import *
>>> from forum.managers import *
>>> objects = TagManager()
>>> objects
<forum.managers.TagManager object at 0x9b9fdac>
>>>