我有以下文件结构:
ihe/
├── dcmt
│ ├── actions
│ ├── calendar_observer
│ ├── cms
│ ├── consumption
│ ├── data_mining
│ ├── dcmt
│ ├── dcmt_db
│ ├── dcmt_db.bak.bak
│ ├── dcmt_db.sqlite
│ ├── devices
│ ├── d.py
│ ├── gadgets
│ ├── history
│ ├── houses
│ ├── hwc_settings
│ ├── __init__.py
│ ├── __init__.pyc
│ ├── manage.py
│ ├── notifications
│ ├── profitable
│ ├── rules
│ └── schedule
├── hwc
│ ├── configuration
│ ├── daemons
│ ├── database
│ ├── __init__.py
│ ├── __init__.pyc
│ ├── utils
│ └── wrapper
├── __init__.py
├── __init__.pycdcmt是一个django项目。hwc是纯python。但是,例如,在hwc/daemon中有一个runme.py脚本。在该runme.py脚本中,我希望能够从django项目导入模型。现在,据我所知,我必须拥有正确的python路径,然后以某种方式设置django设置。我的问题是,我如何最好地做到这一点,以便对于整个hwc模块,我只需要做一次?
发布于 2013-03-13 06:15:02
你的项目结构看起来有点混乱。
将一个Django项目放在另一个包层次结构中可能不是一个好主意。很多导入路径都假设您的项目位于顶级包中,您可能还没有遇到问题的唯一原因是Python2.x仍然支持相对导入(在3.x中已删除)。这使得对包的引用非常模棱两可,并可能导致奇怪的bug。
据我所知,您的设置包实际上被称为(完全限定的) ihe.dcmt.hwc_settings。如果ihe在您的Python路径中(在您试图运行的脚本中检查sys.path的值),那么该路径(即完全限定路径)可能就是DJANGO_SETTINGS_MODULE应该指向的。
如果您希望在脚本中使用Django的功能,您可能需要查看有关编写manage.py命令的文档。这将使您能够更一致地编写与Django相关的脚本,并省去您自己正确引用和初始化Django设置的麻烦。
https://stackoverflow.com/questions/15340682
复制相似问题