我有以下文件结构:
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__.pyc
dcmt是一个django项目。 hwc是纯粹的python。但是例如在hwc / daemons中有一个runme.py脚本。在runme.py脚本中,我希望能够从django项目中导入模型。现在据我所知,我必须有正确的python路径,然后以某种方式设置django设置。我的问题是我如何做到这一点,以便整个hwc模块我只需要这样做一次?
答案 0 :(得分:1)
您的项目结构似乎有点混乱。
将Django项目放在另一个包层次结构中可能不是一个好主意。许多导入路径假设您的项目位于顶级包中,并且您可能没有遇到问题的唯一原因是Python 2.x仍支持相对导入(已在3.x中删除)。这使得对包的引用非常模糊,并且可能导致奇怪的错误。
从我所看到的,您的设置包实际上被称为(完全限定的)ihe.dcmt.hwc_settings
。如果ihe
在您的Python路径中(检查您尝试运行的脚本中的sys.path
的值),那么(即完全限定的路径)可能是DJANGO_SETTINGS_MODULE
应该指着。
如果要在脚本中挂钩Django的功能,可能需要查看编写manage.py
命令的文档。这样可以让您更一致地编写与Django相关的脚本,并且可以省去自己正确引用和初始化Django设置的担忧。