2023年4月

背景

同事最近写一个算法,里面用到了这个scipy.signal.savgol_filter函数,结果在她自己的电脑上面运行正常,到了客户的电脑上面运行就出错了,因为是打包为exe的方式使用的,所以弹出的错误窗体也是一闪而过,不容易看清,后来仔细观察了一下才发现,原来客户电脑的用户名是中文的,冏。

解决

也不能要求所有客户都把用户名改为英文的啊,所以只能是从程序上面想办法解决,查来查去的,后来终于从两篇文章里面得到了灵感,在代码中加入了两条语句:

import _locale;
_locale._getdefaultlocale = (lambda *args: ['en_US', 'utf8'])

经过测试,这样一弄就可以正常使用scipy.signal.savgol_filter函数了。

参考文章

文章1:解决Python在windows平台默认编码(encoding)为gbk所导致的open()函数报错及其他编码问题
文章2:windows下中文用户名造成的加载失败问题