Google App Engine Python2 .7 при локальной разработке не удается инициализировать зависимые от ctypes библиотеки - PullRequest
0 голосов
/ 02 апреля 2020

Googles локальный сервер разработки для App Engine (dev_appserver.py) перестал работать для одного из моих долгосрочных проектов. Сам проект может и был развернут без проблем, но выдает ошибку при инициализации модулей (numpy и PIL), которые вызывают 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.1 и PIL==1.1.7). Кроме того, удаление модулей из файла app.yaml, как упоминалось в другом вопросе, похоже, не имеет значения. Файл app.yaml, используемый для развертывания, выглядит следующим образом:

libraries:
- name: PIL
  version: "1.1.7"

- name: numpy
  version: "1.6.1"

Кто-нибудь знает об изменениях в отношении сервера разработки для работы с этими библиотеками?

1 Ответ

1 голос
/ 03 апреля 2020

Это известная проблема, которая касается только не linux ОС

, вы можете попробовать следующие обходные пути

- понизьте ваш Cloud SDK до v260, эта версия работает нормально на OSX, для этого выполните эту команду

gcloud components update --version 260.0.0

- или отредактируйте файл google / appengine / tools / devappserver2 / python / runtime / sandbox.py

Чтобы удалить / прокомментировать этот пакет ' _ctypes ' из массива _WHITE_LIST_C_MODULES, как указано в этом Google publi c case

...