Le SDK / Go Google App Engine (version Linux) et Python installés avec Linuxbrew sont incompatibles

Cet article a été écrit lors de la participation au Groupe d'étude GAE (Go / Python) Mokumoku à Yokohama Tanemaki vol.16 --connpass.

Si vous exécutez goapp test ou goapp serve avec linuxbrew Python installé, vous obtiendrez l'erreur suivante:

2015/04/18 16:18:46 appengine: not running under devappserver2; using some default configuration
INFO     2015-04-18 07:18:47,665 devappserver2.py:726] Skipping SDK update check.
WARNING  2015-04-18 07:18:47,665 devappserver2.py:742] DEFAULT_VERSION_HOSTNAME will not be set correctly with --port=0
WARNING  2015-04-18 07:18:47,867 simple_search_stub.py:1126] Could not read search indexes from /tmp/appengine.testapp.xxxx/search_indexes
INFO     2015-04-18 07:18:47,869 api_server.py:172] Starting API server at: http://localhost:43830
INFO     2016-04-18 07:18:47,869 api_server.py:588] Applying all pending transactions and saving the datastore
INFO     2015-04-18 07:18:47,870 api_server.py:591] Saving search indexes
Traceback (most recent call last):
  File "/home/xxxx/google-cloud-sdk/platform/google_appengine/dev_appserver.py", line 83, in <module>
    _run_file(__file__, globals())
  File "/home/xxxx/google-cloud-sdk/platform/google_appengine/dev_appserver.py", line 79, in _run_file
    execfile(_PATHS.script_file(script_name), globals_)
  File "/home/xxxx/google-cloud-sdk/platform/google_appengine/google/appengine/tools/devappserver2/devappserver2.py", line 985, in <module>
    main()
  File "/home/xxxx/google-cloud-sdk/platform/google_appengine/google/appengine/tools/devappserver2/devappserver2.py", line 978, in main
    dev_server.start(options)
  File "/home/xxxx/google-cloud-sdk/platform/google_appengine/google/appengine/tools/devappserver2/devappserver2.py", line 774, in start
    self._dispatcher.start(options.api_host, apis.port, request_data)
  File "/home/xxxx/google-cloud-sdk/platform/google_appengine/google/appengine/tools/devappserver2/dispatcher.py", line 182, in start
    _module, port = self._create_module(module_configuration, port)
  File "/home/xxxx/google-cloud-sdk/platform/google_appengine/google/appengine/tools/devappserver2/dispatcher.py", line 262, in _create_module
    threadsafe_override=threadsafe_override)
  File "/home/xxxx/google-cloud-sdk/platform/google_appengine/google/appengine/tools/devappserver2/module.py", line 1102, in __init__
    super(AutoScalingModule, self).__init__(**kwargs)
  File "/home/xxxx/google-cloud-sdk/platform/google_appengine/google/appengine/tools/devappserver2/module.py", line 519, in __init__
    self._use_mtime_file_watcher)
  File "/home/xxxx/google-cloud-sdk/platform/google_appengine/google/appengine/tools/devappserver2/file_watcher.py", line 145, in get_file_watcher
    return _create_linux_watcher(directories)
  File "/home/xxxx/google-cloud-sdk/platform/google_appengine/google/appengine/tools/devappserver2/file_watcher.py", line 120, in _create_linux_watcher
    inotify_file_watcher.InotifyFileWatcher)
  File "/home/xxxx/google-cloud-sdk/platform/google_appengine/google/appengine/tools/devappserver2/file_watcher.py", line 92, in _create_watcher
    return watcher_class(directories)
  File "/home/xxxx/google-cloud-sdk/platform/google_appengine/google/appengine/tools/devappserver2/inotify_file_watcher.py", line 139, in __init__
    self._inotify_poll = select.poll()
AttributeError: 'module' object has no attribute 'poll'

Si vous supprimez Python de linuxbrew avec brew uninstall python et utilisez Python standard, cela fonctionnera.

Qu'est-ce que «select.poll ()»? Quand je l'ai recherché, il a été écrit dans la documentation Python 2.7 comme suit.

(Non pris en charge sur tous les systèmes d'exploitation)Renvoie un objet d'interrogation. Cet objet peut enregistrer et désenregistrer des descripteurs de fichiers, et moi pour les descripteurs de fichiers/O Vous pouvez interroger l'occurrence d'un événement;Consultez la section Objets d'interrogation pour les méthodes fournies par les objets d'interrogation.

http://docs.python.jp/2/library/select.html

Pour une raison quelconque, le Python de linuxbrew semble compiler sans cette fonction ...

Recommended Posts

Le SDK / Go Google App Engine (version Linux) et Python installés avec Linuxbrew sont incompatibles
Version d'exécution de l'environnement standard Google App Engine / Python
[Python] Exécutez Flask sur Google App Engine
À propos du problème que la version python de Google App Engine ne maille pas
Tweet (API 1.1) avec Google App Engine pour Python
Intégration de la banque de données Google App Engine et de l'API de recherche
Divers mémorandums lors de l'utilisation du sdk de l'API de messagerie LINE avec Python (2.7.9) + Google App Engine
Déployer l'application Django sur Google App Engine (Python3)
Procédure de construction de l'environnement de développement Google App Engine / Python (fin 2014)
PIL en Python sur Windows8 (pour Google App Engine)
Premiers pas avec Google App Engine pour Python et PHP
Comment utiliser Django avec Google App Engine / Python