文章目录
[问题描述]
1. 通过pyinstaller生成EXE,将其拷贝到远程服务器执行C链接库错误
缺少链接库 api-ms-win-crt-math-l1-1-0.dll
2. 通过pyinstaller生成EXE,程序执行会出现无法找到模块
ModueNotFoundError: No module named 'requests'
3. Configparser库读取ini配置出现字符识别异常情况
※ 此问题严格来说不属于pyinstaller产生的问题,而是字符问题
[问题解决]
1. C链接库缺失问题,通过部署Visual C++ libraries and the Universal CRT解决
https://www.microsoft.com/zh-CN/download/confirmation.aspx?id=48234
2. 程序执行会出现无法找到模块通过更新库解决
pip install requests --upgrade
3. Windows Notepad存储为UTF-8时,自动在文件头增加"\xfe\xff"隐藏字符引起
- 不要运用Winodws自带的notepad编辑,而是通过其他工具编辑并保存为[UTF-8 无BOM] 格式。
- 如果无法控制ini编辑工具问题,那么就在程序里解决。
- 方法一:将UTF-8 变更为UTF-8-SIG
conf = configparser.ConfigParser()
conf.read('config.ini', "utf-8-sig")
- 方法二:将配置文件进行全局关键字过滤
content = open('config.ini').read()
#Window下用记事本打开配置文件并修改保存后,编码为UNICODE或UTF-8的文件的文件头
#会被相应的加上\xff\xfe(\xff\xfe)或\xef\xbb\xbf,然后再传递给ConfigParser解析的时候会出错
#,因此解析之前,先替换掉
content = re.sub(r"\xfe\xff","", content)
content = re.sub(r"\xff\xfe","", content)
content = re.sub(r"\xef\xbb\xbf","", content)
open('config.ini', 'w').write(content)