所以我的目录结构如下所示:
\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
之外运行时,导入工作正常。
答案 0 :(得分:5)
在遇到同样的问题后,我与Google支持工程师交谈过。不幸的是,GAE不支持这种设置。
使用模块API时,模块1和模块2在单独的Python虚拟环境中作为单独的自包含实例运行。他们不能看到'其父目录的内容。修改sys.path并没有什么不同。
有两种解决方案:
(a)复制你的' lib'文件夹放在' module1_dir'和' module2_dir'。
(b)将模块文件直接放在根目录中。