Google App Engine从父文件夹导入库

时间:2015-03-23 14:36:11

标签: google-app-engine python-import google-app-engine-python

所以我的目录结构如下所示:

\Project-Dir\
|- lib\
|  |- flask\
|  |- ...
|- module1_dir\
|  |- __init__.py
|  |- app.yaml
|  |- app.py
|  |- ...
|- module2_dir\
|  |- __init__.py
|  |- app.yaml
|  |- app.py
|  |- ...
|- ...

内部app.py

sys.path.insert(0, os.path.abspath(os.path.join(os.path.dirname(__file__), '../lib')))

我在同一根目录中有两个模块。它们一起部署到App Engine。他们也共享相同的库。这些库都非常强大,所以我试图将它们放在共享目录(lib)中。

我从dev_appserver.py开始运行\Project-Dir\并传递两个.yamls。我的sys.path设置正常,可以包含lib\目录。然而沙盒似乎顽固地坚持lib\ 中的库不存在。

我确定我只是遗漏了一些像配置改变一样的东西。或者App Engine真的不支持这样的设置吗?

编辑:当我在dev_appserver.py之外运行时,导入工作正常。

1 个答案:

答案 0 :(得分:5)

在遇到同样的问题后,我与Google支持工程师交谈过。不幸的是,GAE不支持这种设置。

使用模块API时,模块1和模块2在单独的Python虚拟环境中作为单独的自包含实例运行。他们不能看到'其父目录的内容。修改sys.path并没有什么不同。

有两种解决方案:

(a)复制你的' lib'文件夹放在' module1_dir'和' module2_dir'。

(b)将模块文件直接放在根目录中。