どのようにGoogle App Engineの(パイソン)でのsys.pathを変更するのですか?

StackOverflow https://stackoverflow.com/questions/2354166

質問

私は私のハンドラスクリプト(main.py)に次の行を追加しようとしましたが、それは動作していないよう:

  

sys.path.append( 'サブディレクトリ')

subdir私のルートディレクトリ(app.yamlを含むすなわち、1)に住んでいます。

私は、インポートモジュールにしようとすると、これは、動作するようには思えないというsubdirでのライブ、私のアプリが爆発します。

役に立ちましたか?

解決

1)あなたは__init__.pyで空白subdirファイルがあることを確認してください。

2)を使用するフルパス。このような何かます:

import os
import sys

sys.path.append(os.path.join(os.path.dirname(__file__), 'subdir'))
<時間>

編集:コメントに尋ねた質問に答えるための詳細情報を提供します。

としてニック・ジョンソンは、あなたがコードのこれらの3本のラインを配置することができますを示していますファイルはfix_path.pyと呼ばれます。次に、あなたのmain.pyファイルで、他のすべての輸入前にこのimport fix_pathを行います。この技術を使用してテストアプリケーションにリンク。

そして、はい、__init__.pyファイルが必要です。 ドキュメントにあたります:

  

パッケージをインポートし、Pythonの   上のディレクトリを検索   パッケージを探しているのsys.path   サブディレクトリます。

     

__init__.pyファイルがに必要とされています   Pythonはとディレクトリを扱う作ります   パッケージを含みます。これをするために行われます   一般的にディレクトリを防ぎます   名前などの文字列から、   意図せずに有効なモジュールを隠します   モジュールの検索で、後に発生していること   道。最も簡単な場合には、   __init__.pyはちょうど空のファイルすることができ、それはまた、初期化を実行することができます   パッケージまたはセットのコード   __all__変数は、後述する。

他のヒント

これは私のsys.pathの最初のエントリとして新しいdirsにを挿入するために働いています。

path_changer.pyます:

import os
import sys

sys.path.insert(0, os.path.join(os.path.dirname(__file__), 'libs'))
sys.path.insert(1, os.path.join(os.path.dirname(__file__), 'apps'))

app.pyます:

import path_changer
from google.appengine.ext.webapp.util import run_wsgi_app

from flask import Flask
import settings

app = Flask('myapp')
app.config.from_object('settings')

from website import views as website_views

run_wsgi_app(app)
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top