To pravděpodobně nepomůže přesně nikomu v roce 2020 nebo později, ale přesto to zde chci zaznamenat pro budoucí generace.
Zažil jsem totéž ValueError: _type_ 'v' not supported
traceback s instalací Pythonu 2.7.16 v prostředí HPC clusteru, pokus o instalaci pdbpp, který závisí na fancycompleter, který závisí na pyreadline, který importuje ctypes.wintypes
a je ovlivněn tímto základním problémem Pythonu z roku 2012.
Je pravda, že ctypes.wintypes
by se nikdy neměly importovat na platformu mimo Windows (Cygwin, MSYS2 a Git Bash jsou technicky jiné než Windows, protože budou mít skutečný GNU Readline knihovnu a nepotřebují čistý Python shim).
Pokud by však bylo importováno na platformě jiné než Windows, kvůli výše uvedenému problému ctypes.wintypes
vyvolá ValueError
místo ImportError
, což znamená, že typický try
/except
který očekává zachycení ImportError
prostě vybuchne kvůli neošetřené výjimce.
Pdbppův fancycompleter, nebo spíše pyreadline, se tomu nějak stal obětí. Jsem zmatený, kdo za to může, protože fancycompleter's setup.py
nemá přinášet pyreadline jako závislost s výjimkou na Windows, ale nějak tam to bylo na mém systému Linux. A pokud je to tam, fancycompleter se to pokouší importovat.
Jediné, co mě napadá, je, že jsem možná měl v mezipaměti pipů starý fancycompleter s překlepem v jeho setup.py
který vtahoval pyreadline, když neměl, protože byl chytit tuto závislost, čas od času.
Co pro mě nakonec tuto situaci vyřešilo, bylo pip uninstall pyreadline
a poté pip install -U --ignore-installed --no-cache-dir fancycompleter
získat "čerstvou" verzi fancycompleter, která nepřinesla zbytečnou závislost na pyreadline.
Jak je uvedeno na jejich webu, PyReadline
knihovna se používá pro Windows .
Při pohledu na poslední řádky trasování zásobníku:
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
Pokouší se importovat datové typy specifické pro Windows z ctypes
což samozřejmě není možné, protože nepoužíváte systém Windows.