flask pip utf 8 編碼報錯處理

2022-08-03 08:57:13 字數 2653 閱讀 4644

今天在公司裡安裝flask的時候,一切正常,可以正常import flask

但是回到家裡,卻莫名其妙的報錯了。

exception:

traceback (most recent call last):

file

"", line 73, in

console_to_str

return

s.decode(sys.__stdout__.encoding)

unicodedecodeerror:

'utf-8

' codec can'

t decode byte 0xb6 in position 33: invalid start byte

during handling of the above exception, another exception occurred:

traceback (most recent call last):

file

"", line 216, in

main

status =self.run(options, args)

file

"", line 342, in

run prefix=options.prefix_path,

file

"", line 784, in

install

**kwargs

file

"", line 878, in

install

spinner=spinner,

file

"", line 676, in

call_subprocess

line =console_to_str(proc.stdout.readline())

file

"", line 75, in

console_to_str

return s.decode('

utf_8')

unicodedecodeerror:

'utf-8

' codec can'

t decode byte 0xb6 in position 33: invalid start byte

也不知道今天是吃錯藥了還是咋的,我竟然沒有立即放棄,按照nankaizhl的一些說明,改了以後發現沒有用,直接報錯了。

python3裡面好像都沒有reload這個函式了。

難道我就只能在公司電腦裡學python?

我只能硬著頭皮去啃報錯的traceback了。

我們仔細看下。

python先是在解決某個異常後,又發現了乙個異常。有意思的是,另外乙個異常,往回追溯,回到了同乙個檔案。

沒辦法,只能帶著恐懼來看python安裝包裡的py**了。

但python直譯器很有好的給出了報錯行數。

我把相關行截出來。

if sys.version_info >= (3,):

defconsole_to_str(s):

try:

return s.decode(sys.__stdout__

.encoding) #

except

unicodedecodeerror:

return s.decode('utf-8

') #

報錯的2個#的那一行。

這個語法是乙個異常處理的,難怪會報錯來自同乙個檔案,這裡很簡單的說明了如果不能正常編碼的話,就用utf-8編碼。

然後看traceback裡的資訊,表明,即使用utf-8編碼也不行,對於中國電腦來收,一般就是路徑裡面有中文。

雖說我們也可以找一下哪些路徑有中文,但我沒這個水平。

很自然的乙個修改的是,把這個改成下面這樣,用gbk的中文編碼。

if sys.version_info >= (3,):

defconsole_to_str(s):

try:

return s.decode(sys.__stdout__

.encoding)

except

unicodedecodeerror:

return s.decode('

gbk') #

未免改後有問題,我在後面加了乙個#。

結果正常了。

補充一點還可能出問題的是,pip安裝flask報錯後,你再次pip install flask,會返回你安裝成功的資訊。

好像也不是安裝成功,更準確的說法是沒有報錯,但這時你import flask會報錯,如下:

我這裡的報錯顯示的很清晰,沒有markupsafe._compat這個module。

所以我本來是想先pip uninstall flask,但是很遺憾,這樣並不能把markupsafe解除安裝掉。

你需要pip uninstall markupsafe才行,然後把上面的編碼改成gbk後,再pip install flask。

這樣就沒問題了,然後我們就一起去學習flask吧。

CCF CSP 201612 4壓縮編碼解題報告

標籤 空格分隔 ccf csp 傳送門題目描述 在乙個操場上擺放著一行共n堆的石子。現要將石子有序地合併成一堆。規定每次只能選相鄰的兩堆合併成新的一堆,並將新的一堆石子數記為該次合併的得分。請計算出將n堆石子合併成一堆的最小得分。題解 人們的第一想法往往是貪心 找最大 最小的堆合併 但是很容易找到貪...

unicode編碼和utf 8編碼詳解

unicode是國際通用編碼,utf 8編碼是unicode編碼在網路之間 主要是網頁 傳輸時的一種 變通 和 橋梁 編碼。utf 8在網路之間傳輸時可以節約資料量。所以,使用作業系統無法搜尋出txt文字。按照utf 8創始人的願望 端 unicode 傳輸 utf 8 端 unicode 但是,後...

編碼(1) unicode,utf 8和其他編碼

1.字符集 ascii字符集,最初的字符集,對應了ansi檔案編碼,乙個字元用乙個位元組表示,嚴格來說這個時候字符集和文字檔案的編碼並沒有必要作為單獨的概念加以區分 從此也可以看出,原來是沒有中間的字符集的抽象的。字符集就是編碼方式,編碼解碼直接對著字符集的對映表即可。二者是乙個概念。西歐字符集 日...