我一直在研究一些GAE项目。这是目录结构
Project Home
|-- config.py
|-- util.py
|-- app.yaml
|-- main.py
|-- __init__.py
|-- login
| |-- __init__.py
| |-- login.py
| `-- login.yaml
我的目标是在 login.py 文件中导入 util.py ,在尝试使用多个选项后,我无法成功完成此操作。我在堆栈溢出时遇到了一些关于此问题的类似帖子,但这些都没有帮助我完成这项工作。
P.S:我正在使用python运行时环境2.7
修改
在 login.py 中使用import util
会出现以下错误
Traceback (most recent call last):
File "<whatever>/google_appengine/google/appengine/runtime/wsgi.py", line 239, in Handle
handler = _config_handle.add_wsgi_middleware(self._LoadHandler())
File "<whatever>/google_appengine/google/appengine/runtime/wsgi.py", line 298, in _LoadHandler
handler, path, err = LoadObject(self._handler)
File "<whatever>/google_appengine/google/appengine/runtime/wsgi.py", line 84, in LoadObject
obj = __import__(path[0])
File "<whatever>/<Project Home>/login/login.py", line 31, in <module>
import util
ImportError: No module named util
答案 0 :(得分:1)
我发现您有两个yaml配置文件app.yaml和login.yaml,因此您必须使用Google App Engine Modules API。
使用Modules API时,登录模块作为单独的自包含实例在单独的Python虚拟环境中运行。它无法“看到”父目录的内容。
有三种解决方案:
(a)将'util.py'文件放在登录目录中复制。
(b)将login.py和login.yaml放在根目录中。
(c)不要使用Modules API,只需要一个带有单个配置文件的默认模块app.yaml。给app.yaml两个URL处理程序,一个用于main.py,另一个用于login.py。我个人推荐这个选项,因为它是最简单的。
答案 1 :(得分:0)
在Python中,您永远不会在代码中使用.py
扩展名。语法只是:
import util