解决execjs库打包后出现黑框闪显问题
execjs库的执行是通过执行call方法,call方法方法最后执行的是Popen。
在执行execjs是会报编码错误,原因是execjs是通过子进程去调用shell去执行js,由于默认编码是gbk
,所以会导致编码错误。
解决办法
import subprocess
from functools import partial
subprocess.Popen = partial(subprocess.Popen, encoding='utf-8')
import execjs
上述办法解决了编码错误。
call方法调用子进程执行shell,将程序打包成exe后,会出现shell的操作框,因此只需把shell的操作框隐藏处理。
解决办法,将上述代码修改成以下代码即可:
import subprocess
from functools import partial
startupinfo = subprocess.STARTUPINFO()
startupinfo.dwFlags |= subprocess.STARTF_USESHOWWINDOW
subprocess.Popen = partial(subprocess.Popen,startupinfo=startupinfo, encoding='utf-8')
import execjs