Google App Engine Python2.7 本地开发初始化ctypes依赖库失败

Google App Engine Python2.7 local development fails to initialize ctypes dependent libraries

用于 App Engine (dev_appserver.py) 的 Google 本地开发服务器已停止为我的长期 运行 项目之一工作。项目本身可以并且已经部署没有问题,但在初始化模块(numpyPIL)时抛出错误,这些模块在本地开发中调用 ctypes。收到的错误如下所示:

    import numpy as np
  File "/Users/dev/google-cloud-sdk/platform/google_appengine/google/appengine/tools/devappserver2/python/runtime/sandbox.py", line 894, in load_module
    module = self._find_and_load_module(fullname, fullname, [module_path])
  File "/Users/dev/google-cloud-sdk/platform/google_appengine/google/appengine/tools/devappserver2/python/runtime/sandbox.py", line 605, in _find_and_load_module
    return imp.load_module(fullname, source_file, path_name, description)
  File "/opt/miniconda3/envs/app-api/lib/python2.7/site-packages/numpy/__init__.py", line 142, in <module>
    from . import core
  File "/opt/miniconda3/envs/app-api/lib/python2.7/site-packages/numpy/core/__init__.py", line 95, in <module>
    from . import numeric
  File "/opt/miniconda3/envs/app-api/lib/python2.7/site-packages/numpy/core/numeric.py", line 39, in <module>
    from ._internal import TooHardError, AxisError
  File "/opt/miniconda3/envs/app-api/lib/python2.7/site-packages/numpy/core/_internal.py", line 17, in <module>
    import ctypes
  File "/opt/miniconda3/envs/app-api/lib/python2.7/ctypes/__init__.py", line 29, in <module>
    if int(_os.uname()[2].split('.')[0]) < 8:
ValueError: invalid literal for int() with base 10: ''

我也遇到了最近遇到类似问题的 。这让我觉得这与开发服务器最近的变化有关。

我已经尝试将这两个软件包更新到最新的 2.7 版本,并将它们降级到 GAE 支持的版本(numpy==1.6.1PIL==1.1.7)。此外,如另一个问题中所述,从 app.yaml 文件中删除模块似乎没有任何区别。用于部署的 app.yaml 文件如下所示:

libraries:
- name: PIL
  version: "1.1.7"

- name: numpy
  version: "1.6.1"

是否有人知道与使用这些库的开发服务器有关的更改?

这是一个已知问题,仅影响非 linux OS

您可以尝试以下解决方法

-- 将您的 Cloud SDK 降级到 v260,此版本在 OSX 上运行良好,为此请 运行 此命令

gcloud components update --version 260.0.0

-- 或者编辑文件google/appengine/tools/devappserver2/python/runtime/sandbox.py

为了remove/comment这个包'_ctypes'来自数组_WHITE_LIST_C_MODULES,如Google public case