2016-11-19 174 views
4

我使用Python 3.5和所有的包都是在以下版本类型错误:unorderable类型:STR()<INT()

numpy-1.12.0b1+mkl-cp35-cp35m-win_amd64 

scikit_learn-0.18.1-cp35-cp35m-win_amd64 

scipy-0.18.1-cp35-cp35m-win_amd64 

我用的是Windows操作系统。

当我使用scikit_learn

,我得到了以下信息,

Traceback (most recent call last): 
    File "F:/liyulin/tf_idf2.py", line 7, in <module> 
    from sklearn import feature_extraction # sklearn是一个数据挖掘工具包 
    File "C:\Users\lijia_xin\AppData\Local\Programs\Python\Python35\lib\site-packages\sklearn\__init__.py", line 57, in <module> 
    from .base import clone 
    File "C:\Users\lijia_xin\AppData\Local\Programs\Python\Python35\lib\site-packages\sklearn\base.py", line 12, in <module> 
    from .utils.fixes import signature 
    File "C:\Users\lijia_xin\AppData\Local\Programs\Python\Python35\lib\site-packages\sklearn\utils\__init__.py", line 11, in <module> 
    from .validation import (as_float_array, 
    File "C:\Users\lijia_xin\AppData\Local\Programs\Python\Python35\lib\site-packages\sklearn\utils\validation.py", line 18, in <module> 
    from ..utils.fixes import signature 
    File "C:\Users\lijia_xin\AppData\Local\Programs\Python\Python35\lib\site-packages\sklearn\utils\fixes.py", line 406, in <module> 
    if np_version < (1, 12, 0): 
TypeError: unorderable types: str() < int() 
Process finished with exit code 1 

这是我第一次提问

解决它请帮助。

+2

@MoinuddinQuadri回溯显然表明它导入失败。看来外部封装已经坏了。 – freakish

回答

13

您的numpy版本是numpy-1.12.0b1。这个“b1”导致了这个问题。如果你看一下你sklearn/utils/fixes.py看到有它试图让一切整数一个parse_version功能:

def _parse_version(version_string): 
    version = [] 
    for x in version_string.split('.'): 
     try: 
      version.append(int(x)) 
     except ValueError: 
      # x may be of the form dev-1ea1592 
      version.append(x) 
    return tuple(version) 

np_version = _parse_version(np.__version__) 

但在“0B1”的情况下,我们会好好ValueError异常路径。所以这条线

if np_version < (1, 12, 0): 

比较

>>> (1, 12, '0b1') < (1, 12, 0) 
Traceback (most recent call last): 
    File "<stdin>", line 1, in <module> 
TypeError: unorderable types: str() < int() 

这是行不通的。虽然这绝对是一个错误,但最简单的解决方案是改变你的numpy版本(比如说,切换回1.11.2)。但是,如果你想保持你当前numpy的版本,你可以只手动编辑fixes.py改变

if np_version < (1, 12, 0): 

if np_version < (1, 12): 

,以便它不会尝试与"0b1"比较0,但会而不是返回False。

+0

它对我来说非常合适!非常感谢你! – Rod

相关问题