我是Django 1.8读者的2个独家新闻。第29章(那些随机实用程序)建议创建一个core
应用程序来存储常用代码。它还建议您可以使用此语法从中导入代码:
e.g。
from core.models import TimeStampedModel
这种相对导入似乎不起作用。我正在使用cookiecutter-django
,我需要这样做:
from projectname.apps.core.models import TimeStampedModel
我尝试将APPS_DIR
添加到path
:
sys.path.insert(str(APPS_DIR))
但由于现在有2个名称相同的模块new_app
和projectname.apps.new_app
,导致导致导入冲突。
我只想避免显式导入。有没有办法在python路径中包含Installed Apps
而不会产生导入冲突?有关外部应用程序导入的最佳做法是什么?
编辑添加项目结构
.
├── README.rst
├── manage.py
├── config
│ ├── __init__.py
│ ├── settings
│ │ ├── __init__.py
│ │ ├── common.py
│ │ ├── local.py
│ │ ├── test.py
│ │ ├── production.py
│ │ └── staging.py
│ ├── urls.py
│ ├── views.py
│ └── wsgi.py
├── projectname
│ ├── __init__.py
│ ├── apps
│ │ ├── __init__.py
│ │ ├── core
│ │ │ └── __init__.py
│ │ └── new_app
│ │ └── __init__.py
│ ├── static
│ │ └── ...
│ └── templates
│ └── ...
├── requirements
│ ├── base.txt
│ ├── local.txt
│ ├── production.txt
│ └── test.txt
└── tests
└── ...
答案 0 :(得分:0)
如果您想使用相对导入,则需要以这种方式导入
<。>来自.core.models导入TimeStampedModel这将采用代码执行的相对路径,与Django 1.8不支持的绝对导入不同