1.PyExecJS (execjs)
问题: 在高版本中报错Exception in thread Thread-1: UnicodeDecodeError: ‘gbk’…
解决方案:
- 在导入
execjs
之前修改编码。
import subprocess
from functools import partial
subprocess.Popen = partial(subprocess.Popen, encoding="utf-8")
import execjs
- 修改源码
subprocess.py
构造方法__init__
中的encoding
为utf-8
def __init__(self, args, bufsize=-1, executable=None,
stdin=None, stdout=None, stderr=None,
preexec_fn=None, close_fds=True,
shell=False, cwd=None, env=None, universal_newlines=None,
startupinfo=None, creationflags=0,
restore_signals=True, start_new_session=False,
pass_fds=(), *, encoding='utf-8', errors=None, text=None):
- 将
execjs
版本降级
pip install PyExecJS==1.0.0 -i https://mirrors.aliyun.com/pypi/simple
2. JS代码中含有引入node_modules包问题
问题: 在JS代码中使用import引入包会进行报错.例如: import CryptoJS from “crypto-js”; 引入包只能通过require进行引入
解决方案:
将 import CryptoJS from "crypto-js";
修改为 const CryptoJS = require("crypto-js")
此时有可能在node中执行js会报错, 将package.json中的{"type": "module"}参数删除即可
3.urllib版本
问题: 高版本报错(Caused by ProxyError(‘Cannot connect to proxy.’, OSError(0, ‘Error’)))
解决方案:
直接退回 urllib 版本:pip3 install urllib3==1.23