2016-02-19 206 views
9

我剛剛在Windows 10上安裝了python,我試圖升級pip。升級pip時出錯:UnicodeDecodeError:'utf-8'編解碼器無法解碼字節

我的Windows用戶名有希伯來語charecters ...

當我嘗試運行:

python -m pip install --upgrade pip 

我得到這個錯誤:

Collecting pip 
Using cached pip-8.0.2-py2.py3-none-any.whl 
Installing collected packages: pip 
    Found existing installation: pip 7.1.2 
Exception: 
Traceback (most recent call last): 
    File "C:\Users\עדי\AppData\Local\Programs\Python\Python35-32\lib\site-packages\pip\basecommand.py", line 211, in main 
    status = self.run(options, args) 
    File "C:\Users\עדי\AppData\Local\Programs\Python\Python35-32\lib\site-packages\pip\commands\install.py", line 311, in run 
    root=options.root_path, 
    File "C:\Users\עדי\AppData\Local\Programs\Python\Python35-32\lib\site-packages\pip\req\req_set.py", line 640, in install 
    requirement.uninstall(auto_confirm=True) 
    File "C:\Users\עדי\AppData\Local\Programs\Python\Python35-32\lib\site-packages\pip\req\req_install.py", line 673, in uninstall 
    for path in pip.wheel.uninstallation_paths(dist): 
    File "C:\Users\עדי\AppData\Local\Programs\Python\Python35-32\lib\site-packages\pip\wheel.py", line 512, in unique 
    for item in fn(*args, **kw): 
    File "C:\Users\עדי\AppData\Local\Programs\Python\Python35-32\lib\site-packages\pip\wheel.py", line 531, in uninstallation_paths 
    r = csv.reader(FakeFile(dist.get_metadata_lines('RECORD'))) 
    File "C:\Users\עדי\AppData\Local\Programs\Python\Python35-32\lib\site-packages\pip\_vendor\pkg_resources\__init__.py", line 1619, in get_metadata_lines 
    return yield_lines(self.get_metadata(name)) 
    File "C:\Users\עדי\AppData\Local\Programs\Python\Python35-32\lib\site-packages\pip\_vendor\pkg_resources\__init__.py", line 1616, in get_metadata 
    return self._get(self._fn(self.egg_info, name)).decode("utf-8") 
UnicodeDecodeError: 'utf-8' codec can't decode byte 0xf2 in position 22365: invalid continuation byte 
You are using pip version 7.1.2, however version 8.0.2 is available. 
You should consider upgrading via the 'python -m pip install --upgrade pip' command. 

我geussing這與我的希伯來語Windows用戶名有關,是否正確?

我可以在不打開新窗口用戶的情況下升級pip嗎?

+0

請更改您的標題,例如** pip --upgrade引發「UnicodeDecodeError」**,但任何事情都比當前更好。否則有趣的問題... – gboffi

回答

7

它看起來像一個假設其元數據存儲爲UTF-8的pip中的錯誤。 相反,您的用戶名似乎被編碼爲「windows-1255」。

你可以嘗試以下方法:

  1. 備份C:\Users\עדי\AppData\Local\Programs\Python\Python35-32\lib\site-packages\pip\_vendor\pkg_resources\__init__.py
  2. 轉到線:1616
  3. 變化utf-8mbcs
  4. 重新運行升級
+1

問題是distlib函數['_csv_open'](https://bitbucket.org/pypa/distlib/src/a87d1b99aca107bd4cad881bc0d6c31bc2ae7cd9/distlib/util.py?at=default&fileviewer=file-view-默認#util.py-1424)使用默認語言環境編碼寫入已安裝文件的「RECORD」。從不依賴於此,特別是在Windows上,因爲ANSI語言環境幾乎毫無價值。我很驚訝PEPs 376和427對這個文件的內容強制執行UTF-8沒有什麼可說的。 – eryksun

+1

我建議將'site-packages \ pip-7.1.2.dist-info \ RECORD'轉換爲UTF-8,即將它讀作'cp1255'並將其寫回爲'utf-8'。 – eryksun

+0

哪一行應該更改?不幸的是,這個答案對Python36-32已經過時了。 – Moberg

相關問題