ImportError:无法导入名称沙箱

时间:2017-11-04 15:51:25

标签: google-app-engine-python

在过去的几天里,只要我运行dev_appserver.py

,就会开始出现这种情况
from google.appengine.tools.devappserver2.python import sandbox
ImportError: cannot import name sandbox

由于我在设置新环境时主要遇到这个问题,我认为在安装过程中我一定是个错误。在过去3个小时内经过足够的头部刮擦之后,我认为它无法进入新的设置,所以我将dev_appserver.py加载到一个已知的工作环境中。

再一次:

from google.appengine.tools.devappserver2.python import sandbox
ImportError: cannot import name sandbox

我的应用代码都没有被更改,因此 是其他内容。

1 个答案:

答案 0 :(得分:7)

原来SDK已经改变了。

我有一个名为appengine_config.py的文件(专门用于开发服务器)将几个C模块列入白名单。

from google.appengine.tools.devappserver2.python import sandbox
sandbox._WHITE_LIST_C_MODULES += ['_ssl', '_socket']

当我禁用这些行时,这个问题被另一个问题所取代(这些问题就是这些问题的原因):

File "[...]/devappserver2/python/runtime/sandbox.py", line 1091, in load_module
    raise ImportError('No module named %s' % fullname)
ImportError: No module named _socket

注意文件路径中的runtime部分?显然沙箱模块的位置已经改变。所以我在导入路径中添加了.runtime

from google.appengine.tools.devappserver2.python.runtime import sandbox

然后,重新启用这些线后,一切都恢复了! ✅任务完成。