Python >> Tutoriel Python >  >> Python Tag >> Bokeh

ImportError :aucun module nommé _ctypes. Moteur d'application Google avec tracé bokeh

J'ai réussi à faire fonctionner le serveur de développement en utilisant 2 hacks

ImportError: No module named _ctypes

Ceci est en fait causé par flaskNew Flask utilise la bibliothèque nommée click qui utilise ctypesGae n'autorise pas ctypesSolution:Install et une ancienne version de click avec

pip install --target lib --upgrade click==5.1

Cela corrige les ctypes mais provoque une autre erreur

ImportError: No module named msvcrt

Cela peut être facilement résolu en ajoutant ces lignes à appengine_config.py (situé dans le même dossier que app.yaml )

import os, sys

on_appengine = os.environ.get('SERVER_SOFTWARE','').startswith('Development')
if on_appengine and os.name == 'nt':
    sys.platform = "Not Windows"

Après le démarrage et le fonctionnement de ce serveur de développement


solution de contournement émise par google ici :

https://issuetracker.google.com/issues/38290292

  • aller à <sdk_root>\google\appengine\tools\devappserver2\python\sandbox.py
  • trouver la définition de _WHITE_LIST_C_MODULES = [xxx]
    ajoutez les deux lignes suivantes à la liste :

    '_winreg',
    '_ctypes',
    
  • réessayez votre application.

travaillé pour moi.


Modifier :Veuillez consulter la réponse ci-dessous pour une nouvelle solution de contournement de Google.

Je peux affirmer catégoriquement que Bokeh lui-même n'utilise pas ctypes directement, n'importe où dans la bibliothèque. Mais il utilise NumPy, et il semble qu'au moins certaines versions de NumPy utilisent ctypes ? Ce lien :

http://kawahara.ca/using-numpy-on-google-app-engine-with-the-anaconda-python-distribution/

semble suggérer que seulement la version 1.6 de NumPy est prise en charge sur GAE. Je pourrais supposer que c'est soit parce que cette version ne le fait pas utiliser des ctypes, ou parce que Google a spécifiquement mis cette version sur liste blanche comme acceptable d'une manière ou d'une autre.

Donc, la suggestion serait d'installer spécifiquement NumPy 1.6, et non la dernière version (soit en utilisant pip ou conda ou autre).