验证django项目的问题没有名为'项目名称'的模块

时间:2011-08-24 02:57:24

标签: django

不幸的是,这一次的追溯并不是很有启发性,所以希望有人可以指出我正确的方向。

当我尝试运行syncdb,validate或runserver时,我得到以下回溯:

Traceback (most recent call last):
  File "manage.py", line 14, in <module>
    execute_manager(settings)
  File "/Library/Python/2.7/site-packages/django/core/management/__init__.py", line 436, in execute_manager
    setup_environ(settings_mod)
  File "/Library/Python/2.7/site-packages/django/core/management/__init__.py", line 419, in setup_environ
    project_module = import_module(project_name)
  File "/Library/Python/2.7/site-packages/django/utils/importlib.py", line 35, in import_module
    __import__(name)
ImportError: No module named osps

osps是我项目的名称。没有触及manage.py文件,看起来是django在创建项目时生成的标准文件。我在settings.py中引用了osps两次。一旦在数据库名称声明上与os.path.dirname(__file__)+'/osps.db'一样,一次在标准ROOT_URLCONF = 'OSPS.urls'中。

此外,快速项目范围搜索不会显示任何import osps语句。有什么建议吗?

1 个答案:

答案 0 :(得分:4)

确保您的目录看起来像这样。

-- osps\
 |-- app1\
 | `-- ...
 |-- __init__.py   <- makes this a module
 |-- manage.py
 |-- settings.py
 `-- urls.py

最糟糕的是,将此行置于settings.py:

的顶部
import os.path.dirname as d, sys.path as p; p.insert(0,d(d(__file__)))

这会将项目的父文件夹放在导入链的顶部。 更好的方法是删除对你的顶级项目的所有引用。它不应该是应用程序之间的任何引用的一部分。这是可插拔/可重用应用程序的最佳实践。 在这种情况下,

import os.path.dirname as _d, sys.path as _p; _p.insert(0,_d(__file__))