我剛剛完成一個節目,我一直在努力,並一直想編譯無效字符分發到單個.exe文件。我決定使用pyinstaller 3,因爲它已經爲我工作,但是在成功編譯我的文件之後,我在運行該程序時收到以下消息。UnicodeEncodeError:「MBCS」編解碼器不能編碼位置0--1個字符:在運行PyInstaller編譯腳本
C:\Users\Luke\Documents\program\dist>viewbot.exe
_ctypes
C:\Users\Luke\AppData\Local\Temp\_MEI59042\_ctypes.pyd
_tkinter
C:\Users\Luke\AppData\Local\Temp\_MEI59042\_tkinter.pyd
Traceback (most recent call last):
File "<string>", line 7, in <module>
File "<frozen importlib._bootstrap>", line 1565, in _find_and_load
File "<frozen importlib._bootstrap>", line 1532, in _find_and_load_unlocked
File "C:\Users\Luke\Documents\program\PyInstaller\loader\pyi_importers.py", line 302, in load_module
File "C:\Python33\lib\tkinter\__init__.py", line 40, in <module>
import _tkinter # If this fails your Python may not be configured for Tk
File "<frozen importlib._bootstrap>", line 1565, in _find_and_load
File "<frozen importlib._bootstrap>", line 1532, in _find_and_load_unlocked
File "C:\Users\Luke\Documents\program\PyInstaller\loader\pyi_importers.py", line 474, in load_module
UnicodeEncodeError: 'mbcs' codec can't encode characters in position 0--1: invalid character
如果有幫助,這是我的計劃的一小部分代碼示例:
import os
import subprocess
from subprocess import call
import time
import tkinter
from tkinter import filedialog
call("color a", shell=True)
root = tkinter.Tk()
root.withdraw()
print ("Please locate your firefox browser)")
path = filedialog.askopenfilename(parent=root,title="Please locate your firefox browser")
path = path + " {0}"
FNULL = open(os.devnull, 'w')
viewed = 0
url = "http://google.com"
refresh = 15
views = 5
call("cls", shell=True)
for i in range(views):
proc = subprocess.Popen(path.format(url))
time.sleep(refresh)
viewed = viewed + 1
print ("Viewed", viewed, "time")
proc.terminate()
call("cls", shell=True)
print ("Viewing finished in", refresh * views, "seconds")
time.sleep(5)
不太清楚在這兒做任何幫助,將不勝感激:)
你看到的錯誤,如果你不PyInstaller運行腳本? [創建一個顯示你的問題的最小代碼示例](http://stackoverflow.com/help/mcve),例如,如果整個腳本只是'import tkinter';它工作嗎?不相關:它是'mbcs',而不是'mbca'。 – jfs
我的猜測是你在文件開始時有一個BOM。 –
請勿將文字作爲圖像發佈。請複製粘貼它。 –