4

appengineにモジュールを正しくインポートするのに問題があります。私のアプリは通常、app-engine-patchでdjangoを使用しますが、この部分はwebappフレームワークのみを使用するタスクキューです。

アプリを正しく動作させるには、django設定をインポートする必要があります。

私のスクリプトは次のように始まります。

import os
import sys
sys.path.append('common/')
# Force Django to reload its settings.
from django.conf import settings
settings._target = None

# Must set this env var before importing any part of Django
os.environ['DJANGO_SETTINGS_MODULE'] = 'settings' 

私はいつもこのエラー、または関連する何かを受け取ります:

<type 'exceptions.ImportError'>: No module named ragendja.settings_pre

settings.pyファイルはで始まるため

from ragendja.settings_pre import *

もう一度sys.pathにragendjaを追加する必要があると思いますが、うまくいかない試行が何度かありました。

これが私のディレクトリです:

project/
    app.yaml
    setting.py
    common/
        appenginepatch/
            ragendja/
                setting_pre.py
    myapp/
        script.py 

これはsys.pathの問題だけですか?正しい構文で変更するにはどうすればよいですか?

ありがとう

4

2 に答える 2

3

App Engineパッチは、sys.pathを内部で操作します。バックグラウンドタスクはそのコードをバイパスするため、パスはDjango呼び出しの準備ができていません。2つの選択肢があります。

  • パスを手動で修正します。App Engineのドキュメント(「インポートパス操作の処理」というサブセクションを参照)では、タスクスクリプトでインポートできるモジュールにパス操作コードを分解することを提案しています。

  • 可能であれば、djangoコードへの依存を排除​​します。タスクを純粋なPythonやGoogleAPI呼び出しで作成できる場合は、問題ありません。あなたの場合、これは設定コードのリファクタリングを意味するかもしれません。

于 2010-08-30T13:33:06.087 に答える
0

なぜだめですか:

sys.path.append('common/appenginepatch')

ragendjaはこのディレクトリにあるので?

于 2010-08-30T13:34:21.280 に答える