Es probable que esto no ayude exactamente a nadie en el año 2020 o más allá, pero de todos modos quiero registrarlo aquí para la posteridad.
Experimenté el mismo ValueError: _type_ 'v' not supported
rastrear con una instalación de Python 2.7.16 en un entorno de clúster HPC, intentando instalar pdbpp, que depende de fancycompleter, que depende de pyreadline, que importa ctypes.wintypes
y se ve afectado por este problema central de Python de 2012.
Es cierto que ctypes.wintypes
nunca debe importarse en una plataforma que no sea Windows (Cygwin, MSYS2 y Git Bash técnicamente no son Windows, ya que tendrán un real biblioteca GNU Readline y no necesita el shim de Python puro).
Sin embargo, si fuera importado en una plataforma que no es Windows, debido al problema mencionado anteriormente, ctypes.wintypes
lanza un ValueError
en lugar de un ImportError
, lo que significa que un típico try
/except
que espera atrapar un ImportError
simplemente explotará debido a la excepción no controlada.
Fancycompleter de Pdbpp, o más bien pyreadline, de alguna manera fue víctima de esto. Me confunde quién tiene la culpa, porque el setup.py
de fancycompleter no se supone que incluya pyreadline como una dependencia excepto en Windows, pero de alguna manera ahí estaba en mi sistema Linux. Y si está ahí, fancycompleter intenta importarlo.
Todo lo que puedo imaginar es que puede haber tenido un antiguo sofisticado en mi caché de pip con un error tipográfico en su setup.py
que estaba tirando de pyreadline cuando no debería haberlo hecho, porque era agarrando esa dependencia, una y otra vez.
Lo que finalmente resolvió esta situación para mí fue pip uninstall pyreadline
, luego pip install -U --ignore-installed --no-cache-dir fancycompleter
para obtener una versión "nueva" de fancycompleter que no trajo la dependencia innecesaria de pyreadline.
Como se indica en su sitio, el PyReadline
biblioteca se utiliza para Windows .
Mirando las últimas líneas de su seguimiento de pila:
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
Está intentando importar tipos de datos específicos de Windows desde ctypes
lo que obviamente no es posible ya que no está ejecutando Windows.