我在Google应用引擎帐户中有两个不同的项目。我的计算机中的文件夹结构如下:
我在common_folder中有很少的python类,我想在两个项目中使用它们(project1和project2)。
我想将公共类导入到我的项目中,因此Google App Engine也会在生产环境中识别它们(也许GAE可以在上传时创建公共文件的副本?)
我尝试使用以下代码从特定的父目录路径导入我的类:
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 *
此代码仅适用于我的localhost环境,但当我将其上传到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
答案 0 :(得分:0)
您看到错误的原因是在部署期间,模块/服务目录(或单个模块应用程序的应用程序目录)上方没有任何内容上传到GAE。
您可以将app dirs中的必要文件符号链接,请参阅https://stackoverflow.com/a/34291789/4495081。部署实用程序知道遵循符号链接并在部署中包含公用文件夹包。
我建议将common文件夹作为一个包(添加__init__.py
文件),然后在每个应用程序中添加vendor it in,而不是复制/安装代码,只需符号链接{{1}中的公共代码dir dir。
然后你不需要手动调整路径,在你的应用程序中你只需要使用这样的类(假设例如lib
来自MyClass
):
common_folder/class.py