在終端啟動Python時報錯的解決方案

2022-09-29 22:30:32 字數 1439 閱讀 9513

最近,在終端啟動python時,報了乙個錯誤:

failed calling sys.__interactivehook__

www.cppcns.comtraceback (most recent call last):

file "d:\programdata\anaconda3\lib\site.py", line 439, in register_readline

readline.read_history_file(history)

file "d:\programdata\anaconda3\lib\site-packages\pyreadline\rlmain.py", line 165, in read_history_file

self.mode._history.read_history_file(filename)

file "d:\programdata\anaconda3\lib\site-packages\pyreadline\lineeditor\history.py", line 82, in read_history_file

for line in open(filen程式設計客棧ame, 'r'):

unicodedecodeerror: 'gbk' codec can't decode byte 0xa7 in position 2167: illegal multibyte sequence

原因是python的終端歷史檔案中包含中文,但不能正確使用gbk解碼。檢視了python歷史檔案(系統使用者目錄下的.python_history),其編碼方式為「utf-8」,而」history.py」中讀取歷史檔案時使用的編碼方式為「gbk」,所以會報錯。 

解決方法

在history.py中使用`for line in open(filename, 'r')`來開啟檔案並讀取每一行,使用的是預設的編碼方式。需要根據不同檔案的編碼方式傳入相應的引數值。

1. 首先檢測出要開啟的檔案的編碼方式。

在類中定義乙個私有方法_get_encoding,作用是檢測檔案的編碼方式,並返回。(需要匯入chardet包)

def _get_encoding(self, filename=none):

i程式設計客棧f filename is none:

return

with open(filename, 'rb') as f:

return chardet.detect(f.read())['encoding']

2. 修改歷史檔案內容的讀取

encoding = self._get_encoding(filename)

for line ipmgrzan open(filename, 'r', 程式設計客棧encoding=encoding):

self.add_history(lineobj.readlinetextbuff(ensure_unicode(line.rstrip())))

在安裝Python時報錯

在.configure時 報錯提示 configure error no acceptable c compiler found in path 查資料得知是缺少gcc元件 安裝gcc元件即可 再次進行.configure 不再報錯 make make install 編譯完之後 mv usr bi...

vs命令列工具在啟動時報錯

在使用vs命令列執行程式的編譯的時候,啟動時候會報錯 mysql不是內部或外部命令。右鍵命令列工具 屬性,檢視目標,檢視此命令列視窗所新增的引數,找到vs對應的bat檔案後,檢視,沒有異常 echo path 沒有環境變數沒有顯示完整,被截斷 再查環境變數,正好在下面這條環境變數的 處截斷 c pr...

fabric ca 1 1啟動時報錯

公升級到fabric ca 1.1版本後,通過命令生成fabric ca server,啟動時會報錯誤panic version is not set for fabric ca library 這是在啟動時呼叫了lib metadata包中version.go的version變數,但是在初始化啟動...