7

所以我的目录结构看起来像这样:

\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.

4

1 回答 1

5

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

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

有两种解决方案:

(a) 复制您的“lib”文件夹,将其放在“module1_dir”和“module2_dir”中。

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

于 2015-08-03T15:51:06.317 回答