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 で削除されました)。これにより、パッケージへの参照が非常に曖昧になり、奇妙なバグが発生する可能性があります。

あなたの設定パッケージは実際には (full-qualified) と呼ばれていますihe.dcmt.hwc_settings。が Python パスにある場合(実行しようとしているスクリプトiheの値を確認してください)、それ (つまり、完全修飾パス) がおそらく指し示すべきものです。sys.pathDJANGO_SETTINGS_MODULE

スクリプトで Django の機能を利用したい場合は、manage.pyコマンドの記述に関するドキュメントを参照することをお勧めします。これにより、Django 関連のスクリプトをより一貫して記述できるようになり、Django の設定を自分で参照して正しく初期化することについて心配する必要がなくなります。

于 2013-03-12T22:15:01.717 に答える