Cela n'aidera probablement personne en 2020 ou au-delà, mais je veux tout de même l'enregistrer ici pour la postérité.
J'ai vécu le même ValueError: _type_ 'v' not supported
traceback avec une installation de Python 2.7.16 dans un environnement de cluster HPC, tentant d'installer pdbpp, qui dépend de fancycompleter, qui dépend de pyreadline, qui importe ctypes.wintypes
et est affecté par ce problème principal de Python depuis 2012.
C'est vrai que ctypes.wintypes
ne doit jamais être importé sur une plate-forme non Windows (Cygwin, MSYS2 et Git Bash sont techniquement non Windows, car ils auront un réel bibliothèque GNU Readline et n'ont pas besoin du shim Python pur).
Cependant, si c'était l'étaient importé sur une plate-forme non Windows, en raison du problème mentionné ci-dessus, ctypes.wintypes
lance un ValueError
au lieu d'un ImportError
, ce qui signifie qu'un try
typique /except
qui s'attend à attraper un ImportError
va juste exploser à cause de l'exception non gérée.
Le fancycompleter de Pdbpp, ou plutôt pyreadline, en a été victime. Je ne sais plus qui est à blâmer, car le setup.py
de fancycompleter n'est pas censé apporter pyreadline en tant que dépendance sauf sous Windows, mais d'une manière ou d'une autre il était là sur mon système Linux. Et si il est là, fancycompleter essaie de l'importer.
Tout ce que je peux comprendre, c'est que j'ai peut-être eu un vieux fancycompleter dans mon cache pip avec une faute de frappe dans son setup.py
qui tirait pyreadline alors qu'il n'aurait pas dû, parce que c'était l'était saisissant cette dépendance, maintes et maintes fois.
Ce qui a finalement résolu cette situation pour moi était de pip uninstall pyreadline
, puis pip install -U --ignore-installed --no-cache-dir fancycompleter
pour obtenir une "nouvelle" version de fancycompleter qui n'a pas introduit la dépendance inutile de pyreadline.
Comme indiqué sur leur site, le PyReadline
la bibliothèque est utilisée pour Windows .
En regardant les dernières lignes de votre trace de pile :
import ctypes.wintypes as wintypes
File "/usr/local/lib/python2.7/ctypes/wintypes.py", line 23, in <module>
class VARIANT_BOOL(_SimpleCData):
ValueError: _type_ 'v' not supported
Il essaie d'importer des types de données spécifiques à Windows à partir de ctypes
ce qui n'est évidemment pas possible puisque vous n'utilisez pas Windows.