devappserver.py для std ядра приложения на локальном хосте очищает os.uname и вылетает в ctypes - PullRequest
1 голос
/ 04 марта 2020

Я по глупости переустановил все мои Python 2.7 зависимости, и что-то сломалось. Если вы заметили в строке 1, os.uname () имеет допустимое значение, но к тому времени, когда GAE вызывает модуль ctypes (строка 3), оно очищается, и мой локальный сервер не отвечает клиенту.

Мне это кажется немного надуманным, и я буду признателен за любые рекомендации.

os.uname() is: 19.3.0
INFO     2020-03-04 19:11:42,584 instance.py:294] Instance PID: 8624
os.uname() is: 
ERROR    2020-03-04 19:11:43,311 wsgi.py:269] 
Traceback (most recent call last):
  File "/Users/dgaedcke/gcloud_tools/google-cloud-sdk/platform/google_appengine/google/appengine/runtime/wsgi.py", line 240, in Handle
    handler = _config_handle.add_wsgi_middleware(self._LoadHandler())
  File "/Users/dgaedcke/gcloud_tools/google-cloud-sdk/platform/google_appengine/google/appengine/runtime/wsgi.py", line 311, in _LoadHandler
    handler, path, err = LoadObject(self._handler)
  File "/Users/dgaedcke/gcloud_tools/google-cloud-sdk/platform/google_appengine/google/appengine/runtime/wsgi.py", line 96, in LoadObject
    __import__(cumulative_path)
  File "/Users/dgaedcke/dev/TouchstoneMicroservices/service_backend/main.py", line 7, in <module>
    import endpoints as google_cloud_endpoints
  File "/Users/dgaedcke/dev/TouchstoneMicroservices/lib/site-packages/endpoints/__init__.py", line 29, in <module>
    from .api_config import api, method
  File "/Users/dgaedcke/dev/TouchstoneMicroservices/lib/site-packages/endpoints/api_config.py", line 44, in <module>
    import attr
  File "/Users/dgaedcke/dev/TouchstoneMicroservices/lib/site-packages/attr/__init__.py", line 5, in <module>
    from . import converters, exceptions, filters, validators
  File "/Users/dgaedcke/dev/TouchstoneMicroservices/lib/site-packages/attr/filters.py", line 7, in <module>
    from ._compat import isclass
  File "/Users/dgaedcke/dev/TouchstoneMicroservices/lib/site-packages/attr/_compat.py", line 139, in <module>
    set_closure_cell = make_set_closure_cell()
  File "/Users/dgaedcke/dev/TouchstoneMicroservices/lib/site-packages/attr/_compat.py", line 129, in make_set_closure_cell
    ctypes = import_ctypes()
  File "/Users/dgaedcke/dev/TouchstoneMicroservices/lib/site-packages/attr/_compat.py", line 95, in import_ctypes
    import ctypes
  File "/usr/local/Cellar/python@2/2.7.15_1/Frameworks/Python.framework/Versions/2.7/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 ]

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

Попробуйте отредактировать файл-заглушку, расположенный в devappserver2 / python / runtime.

google_appengine/google/appengine/tools/devappserver2/python/runtime/stubs.py

От:

    def fake_uname():

      """Fake version of os.uname."""

      return ('Linux', '', '', '', '')

До:

    def fake_uname():
      """Fake version of os.uname."""
      return ('Linux', 'local', '19', 'Darwin Kernel Version 19', 'x86_64')

Это не очень хорошее долгосрочное решение, потому что обновления цепочки инструментов gcloud, скорее всего, уничтожат эти изменения.

1 голос
/ 06 марта 2020

attrs не использует ctypes с 19.2.0 , поэтому решение состоит в том, чтобы как-то обновить ваши зависимости.

...