不幸的是,这一次的追溯并不是很有启发性,所以希望有人可以指出我正确的方向。
当我尝试运行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
语句。有什么建议吗?
答案 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__))