"ValueError: _type_ 'v' not supported" error after installing PyReadline
This will likely help exactly no one in the year 2020 or beyond, but all the same I want to record it here for posterity.
I experienced the same ValueError: _type_ 'v' not supported
traceback with an installation of Python 2.7.16 in an HPC cluster environment, attempting to install pdbpp, which depends on fancycompleter, which depends on pyreadline, which imports ctypes.wintypes
and is affected by this this core Python issue from 2012.
It's true that ctypes.wintypes
should never be imported on a non-Windows platform (Cygwin, MSYS2, and Git Bash are technically non-Windows, since they will have a real GNU Readline library and don't need the pure Python shim).
However if it were imported on a non-Windows platform, because of the issue mentioned above, ctypes.wintypes
throws a ValueError
instead of an ImportError
, which means that a typical try
/except
that expects to catch an ImportError
will just blow up because of the unhandled exception.
Pdbpp's fancycompleter, or rather pyreadline, somehow fell victim to this. I get confused about who's to blame, because fancycompleter's setup.py
isn't supposed to bring in pyreadline as a dependency except on Windows, but somehow there it was on my Linux system. And if it's there, fancycompleter tries to import it.
All I can figure is I may have had an old fancycompleter in my pip cache with a typo in its setup.py
that was pulling in pyreadline when it shouldn't have, because it was grabbing that dependency, time after time.
What actually finally resolved this situation for me was to pip uninstall pyreadline
, then pip install -U --ignore-installed --no-cache-dir fancycompleter
to get a "fresh" version of fancycompleter that did not bring in the unnecessary pyreadline dependency.
As stated on their site, the PyReadline
library is Used for Windows.
Looking at the last lines of your stack trace:
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
It is trying to import windows specific data types from ctypes
which is obviously not possible since you are not running Windows.