Python &引用;ValueError:type';v';“不支持”;安装PyReadline后出错

Python &引用;ValueError:type';v';“不支持”;安装PyReadline后出错,python,linux,python-2.7,ipython,Python,Linux,Python 2.7,Ipython,在我安装了PyReadline之后,IPython将无法工作。当我卸载它时,它又开始工作了 ipython的堆栈跟踪: (py2.7_监视器)[root@vm10-136-8-98监视器]#ipython 警告:IPython历史记录需要SQLite,您的历史记录将不会保存 回溯(最近一次呼叫最后一次): 文件“/home/py2.7_monitor/bin/ipython”,第11行,在 sys.exit(start_ipython()) 文件“/home/py2.7_monitor/lib/

在我安装了PyReadline之后,IPython将无法工作。当我卸载它时,它又开始工作了

ipython的堆栈跟踪:

(py2.7_监视器)[root@vm10-136-8-98监视器]#ipython
警告:IPython历史记录需要SQLite,您的历史记录将不会保存
回溯(最近一次呼叫最后一次):
文件“/home/py2.7_monitor/bin/ipython”,第11行,在
sys.exit(start_ipython())
文件“/home/py2.7_monitor/lib/python2.7/site packages/IPython/_init__.py”,第118行,在start_IPython中
返回启动新实例(argv=argv,**kwargs)
文件“/home/py2.7_monitor/lib/python2.7/site packages/traitlets/config/application.py”,第591行,在launch_实例中
应用程序初始化(argv)
文件“”,第2行,在初始化中
文件“/home/py2.7\u monitor/lib/python2.7/site packages/traitlets/config/application.py”,第75行,在catch\u config\u error中
返回方法(应用程序、*args、**kwargs)
文件“/home/py2.7_monitor/lib/python2.7/site packages/IPython/terminal/ipapp.py”,第314行,在初始化中
self.init_shell()
init_shell中的文件“/home/py2.7_monitor/lib/python2.7/site packages/IPython/terminal/ipapp.py”,第330行
ipython\u dir=self.ipython\u dir,user\u ns=self.user\n)
文件“/home/py2.7_monitor/lib/python2.7/site packages/traitlets/config/configurable.py”,实例中第380行
inst=cls(*args,**kwargs)
文件“/home/py2.7_monitor/lib/python2.7/site packages/IPython/core/interactiveshell.py”,第531行,在__
self.init_readline()
文件“/home/py2.7_monitor/lib/python2.7/site packages/IPython/core/interactiveshell.py”,第1941行,在init_readline中
将IPython.utils.rlineimpl作为readline导入
文件“/home/py2.7_monitor/lib/python2.7/site packages/IPython/utils/rlineimpl.py”,第21行,在
_rl=uuu导入_uuu(rlmod_u名称)
文件“/home/py2.7_monitor/lib/python2.7/site packages/readline.py”,第6行,在
从pyreadline.rlmain导入Readline
文件“/home/py2.7_monitor/lib/python2.7/site packages/pyradline/_init__.py”,第12行,在
从…起导入记录器、剪贴板、线编辑器、模式、控制台
文件“/home/py2.7_monitor/lib/python2.7/site packages/pyradline/clipboard/_init__.py”,第13行,在
从.win32_剪贴板导入GetClipboardText、SetClipboardText
文件“/home/py2.7_monitor/lib/python2.7/site packages/pyradline/clipboard/win32_clipboard.py”,第37行,在
将ctypes.wintypes导入为wintypes
文件“/usr/local/lib/python2.7/ctypes/wintypes.py”,第23行,在
类变量(SimpleCData):
ValueError:\u类型\uv'不受支持
在他们的网站上,PyReadline库用于Windows

查看堆栈跟踪的最后几行:

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
将ctypes.wintypes导入为wintypes
文件“/usr/local/lib/python2.7/ctypes/wintypes.py”,第23行,在
类变量(SimpleCData):
ValueError:\u类型\uv'不受支持

它正试图从
ctypes
导入windows特定的数据类型,这显然是不可能的,因为您没有运行windows。

这可能对2020年或以后的任何人都没有帮助,但我还是想在这里为子孙后代记录

我也经历了同样的
ValueError:\u type_u'v'不受支持
在HPC群集环境中安装Python 2.7.16时的回溯,尝试安装,这取决于,这取决于pyradline,它导入
ctypes.wintypes
,并从2012年起受此影响

确实,绝不应该在非Windows平台上导入
ctypes.wintypes
(Cygwin、MSYS2和Git Bash在技术上是非Windows的,因为它们将有一个真正的GNU Readline库,不需要纯Python垫片)

但是,如果是在非Windows平台上导入的,由于上述问题,
ctypes.wintypes
会抛出一个
ValueError
,而不是
ImportError
,这意味着一个典型的
try
/
异常,它期望捕获一个
ImportError
,将因为未处理的异常而爆炸

Pdbpp的fancycompleter,或者更确切地说是pyreadline,不知何故成为了这个问题的受害者。我不知道该怪谁,因为fancycompleter的
setup.py
不应该将pyreadline作为依赖项引入,但不知何故,它在我的Linux系统上就存在着。如果它在那里,fancycompleter会尝试导入它

我所能想到的是,我的pip缓存中可能有一个旧的fancycompleter,它的
setup.py
中有一个输入错误,它本不应该在pyreadline中输入,因为它一次又一次地获取依赖关系


实际上,我最终解决了这个问题的方法是
pip卸载pyreadline
,然后
pip安装-U-忽略安装-no cache dir fancycompleter
,以获得一个没有带来不必要的pyreadline依赖性的fancycompleter的“新”版本。

这也适用于我的情况,Win10下的Msys2。我只是用pacman-Rs mingw-w64-x86_64-python-pyriadline
删除了
pyriadline
,问题就解决了。