私はGoogleのアプリケーションエンジンのアカウントで2つの異なるプロジェクトを持っています。私のパソコン内のフォルダ構造は以下の通りです:GAEプロジェクトの共通ファイルを定義する
- parent_folder
- common_folder
- project1_folder
- project2_folder
私は私が欲しいcommon_folderのいくつかのPythonのクラスを持っています両方のプロジェクト(project1とproject2)で使用できます。
私は次のように使用してみました
(アップロード時に多分GAEは、共通ファイルのコピーを作成することができますか?)Google App EngineのプロダクションENVにもそれらを認識しますので、私のプロジェクトに共通のクラスをインポートしたいです特定の親ディレクトリ・パスから私のクラスをインポートするためのコード:
import os
PARENT_DIR = os.path.dirname(os.path.dirname(__file__))
print PARENT_DIR
def load_src(name, fpath):
import os, imp
return imp.load_source(name, os.path.join(os.path.dirname(__file__), fpath))
load_src("globals", PARENT_DIR +"/common/globals.py")
from globals import *
このコードは私のローカルホスト環境からのみ働いていたが、私はGAEにアップロードするとき、それはクラスを認識しませんでした:
> File
> "/base/data/home/apps/s~loan-management-system/1.394267205500555512/main.py",
> line 39, in load_src
> return imp.load_source(name, os.path.join(os.path.dirname(__file__), fpath)) IOError: [Errno 2] No
> such file or directory
それは動作します:
次に、あなたのアプリであなただけの(
MyClass
がcommon_folder/class.py
から来ているたとえば仮定して)、このようなクラスを使用すると思い、手動でパスをいじる必要はありません。ありがとう。私は 'models'という名前のフォルダを作成し、その中に空の__init__.pyファイルとすべての一般的なpythonファイルを作成しました。私は自分のプロジェクトにそのフォルダへのシンボリックリンクを作成しました。 –