0

私はGoogleAppEngineを初めて使用し、それをいじってみましたが、私の人生では、非標準のモジュールをインポートする方法がわかりません。さらに言えば、app.yamlを完全に理解していません。ファイルの目的。

基本的に、スクリプトファイルからSimPy(〜15個のPythonファイルのコレクション)をインポートしたいのですが、実行するすべての組み合わせにより、ImportErrorが発生します。

from SimPy.Simulation import *
ImportError: No module named SimPy.Simulation

現在、それらはすべて同じフォルダーにあり、私のapp.yamlファイルは次のようになっています。

application: physicalsim
version: 1
runtime: python
api_version: 1

handlers:
- url: /
  script: physicalsim.py
- url: /
  script: Globals.py
- url: /
  script: Simulation.py
etc....

yamlファイルの構文が間違っていることは確かですが、どこでもそれを行う方法についての有用なドキュメントを見つけることができません(少しイライラします)、定義されたフォルダーの意味を本当に理解していません一部のapp.yamlファイルでは、物理的な構造がないことを念頭に置いて見ましたが、それらは単なる仮想フォルダーですか?

あなたが助けることができれば乾杯し、私は劣等生として出くわしたと確信しています:)

4

3 に答える 3

3

appconfig (ファイルをスキップする)ドキュメントから:

パスがstatic_dirパスまたはstatic_filesアップロードパスと一致するアプリケーションディレクトリ内のファイルは、静的ファイルと見なされます。アプリケーションディレクトリ内の他のすべてのファイルは、アプリケーションプログラムおよびデータファイルと見なされます

skip_files要素は、アプリケーションディレクトリ内のどのファイルをAppEngineにアップロードしないかを指定します。値は、正規表現または正規表現のリストのいずれかです。正規表現のいずれかに一致するファイル名は、アプリケーションのアップロード時にアップロードするファイルのリストから省略されます。

SimPyスキップリストに入れないでください)。

に含まれるプログラムファイルを指定する必要はありませんapp.yamlSimPy アプリケーションディレクトリに、__init__.pyファイルと、もちろん、という名前のサブディレクトリが含まれていることを確認してくださいSimulation.py

于 2010-08-06T12:07:07.300 に答える
1

app.yamlファイルのドキュメントは、ApplicationConfigページにあります

ハンドラーセクションは基本的に、リクエストのURLを順番に指定された各パターンと比較し、最初の一致が見つかったときに一致するハンドラーを実行することによって機能します(または、の代わりにstatic_dirまたはstatic_filesが指定されている場合は静的ファイルを提供しますscript

表示したapp.yamlで、URLが完全に一致/すると、ハンドラーphysicalsim.pyが呼び出されます。他のすべてのハンドラーは同じURLから提供されるため、無視されます。それらがphysicalsim.pyのサポートモジュールである場合、app.yamlにそれらについて何も含める必要はありません。

URLは、Webアプリの構造が内部でどのように見えるかに関係する必要はありません。URLパスと、ハンドラーおよびモジュールを含むディレクトリーとの間に対応関係がある必要はありません(ただし、健全性のために、少なくともある程度の相関関係を維持する必要がある場合があります)。

はじめにのドキュメントを読み終えましたか?

存在するディレクトリapp.yaml(つまり、アップロードされるアプリケーションのルート)はPythonパス上にあり、それに関してすべてのモジュールを参照できる必要があります(および/または必要に応じてハンドラーに他のモジュールを追加できます)。 )。

于 2010-08-06T12:21:43.980 に答える
1

モジュールをインポートしたいサブフォルダに空のinit.pyを追加します。私はこれに気づいていませんでし...

私はこのSOの投稿で答えを見つけました。

サブフォルダからモジュールをインポートします

于 2018-06-26T13:12:20.607 に答える