2016-11-19 160 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

相關問題