前提
我相信很多人在使用 execjs 去执行js文件的时候都会遇到这个问题,下面我将使用两种方式去彻底解决这个问题
准备工作
Python版本:python 3.7以上的解释器
安装pyexecjs:pip install pyexecjs
问题描述
执行js的过程中报错截图如下:
由报错截图可以看出,报错是和编码有关,因此我们可以修改对应执行流程中的编码,至于具体修改哪里,可以看我下面的描述。
问题解决
- 修改
subprocess.py
文件的 encoding=None
修改如下:
- 修改
subprocess.py
文件的 encoding=“locale” 【比较推荐】
为什么比较推荐修改第二种方式呢?因为博主一开始通过第一种方式解决问题的时候,发现会导致我
poetry包管理工具
失效,因此经过单步调试,发现只需要修改locale
这个位置即可成功执行js文件,同时又不影响我的包管理工具。废话少说,贴上修改的图片。
- 如果实在是不想动源码的话,可以用第三种方案,也能处理这个问题
在程序的最上头加上这样一段代码,重新运行程序你会发现,程序可以运行成功了。
import subprocess
from functools import partial
subprocess.Popen = partial(subprocess.Popen, encoding="utf-8")
import execjs
总结
至此,你是不是发现你所遇到的这个问题,轻轻松松的被解决了!!!