Google App Engine从父文件夹导入库

jsr*_*ren 6 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
|  |- ...
|- ...
Run Code Online (Sandbox Code Playgroud)

app.py

sys.path.insert(0, os.path.abspath(os.path.join(os.path.dirname(__file__), '../lib')))
Run Code Online (Sandbox Code Playgroud)

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

我正在dev_appserver.py\Project-Dir\和传球两个.yamls.我sys.path的设置很好,包括lib\目录.然而沙盒似乎固执地坚持认为图书馆lib\ 不存在.

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

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

Mil*_*ilo 5

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

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

有两种解决方案:

(a)将'lib'文件夹放在'module1_dir'和'module2_dir'中复制.

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