どのようにGoogle App Engineの(パイソン)でのsys.pathを変更するのですか?
-
23-09-2019 - |
質問
私は私のハンドラスクリプト(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)