1. 程式人生 > >關於使用pyinstaller 打包帶有matplotlib 等出現UnicodeDecodeError解決方法

關於使用pyinstaller 打包帶有matplotlib 等出現UnicodeDecodeError解決方法

環境 win7 64位旗艦版
python3.4 anaconda
在含有 matplotlib的指令碼工程中,用pyinstaller將其打包,在loading最後一個包zmq.py時出現錯誤:

out = out.decode(encoding)
UnicodeDecodeError: 'utf-8' codec can't decode byte 0xce in position 121: invalid start byte

查了一圈終於找到原因:

  1. 在zmq包 \Lib\site-packages\zmq\backend\cffi\__pycache__\_cffi_ext.c 檔案中,聲明瞭< sys/un.h >標頭檔案,而在windows下沒有這個檔案
  2. pyinstaller在分析< sys/un.h >的時候出錯,並返回錯誤資訊
  3. 錯誤資訊的格式是基於當前控制檯的編碼格式,不同的作業系統編碼格式不同,而一般程式碼都使用utf-8編碼

解決思路,改變控制檯的編碼格式為utf-8
解決方法,在控制檯中輸入 chcp 65001,然後再使用pyinstaller -F -w xxx.py 打包成功。