3

我有以下文件结构:

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 模块我只需要这样做一次?

4

1 回答 1

1

您的项目结构似乎有点混乱。

在另一个包层次结构中拥有一个 Django 项目可能不是一个好主意。许多导入路径假定您的项目位于顶级包中,而您可能尚未遇到问题的唯一原因是 Python 2.x 仍然支持相对导入(已在 3.x 中删除)。这使得对包的引用非常模糊,并可能导致奇怪的错误。

从我可以看到您的设置包实际上被称为 (fully-qualified) ihe.dcmt.hwc_settings。如果ihe在您的 Python 路径中(检查sys.path您尝试运行的脚本中的值),那么(即完全限定的路径)可能DJANGO_SETTINGS_MODULE应该指向。

如果您想在脚本中使用 Django 的功能,您可能需要查看文档以编写manage.py命令。这将让您更一致地编写与 Django 相关的脚本,并让您不必担心自己正确地引用和初始化 Django 的设置。

于 2013-03-12T22:15:01.717 回答