欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Pyinstaller生成EXE无法正常执行

程序员文章站 2022-05-10 23:33:07
...

[问题描述]

1. 通过pyinstaller生成EXE,将其拷贝到远程服务器执行C链接库错误
缺少链接库 api-ms-win-crt-math-l1-1-0.dll
2. 通过pyinstaller生成EXE,程序执行会出现无法找到模块
ModueNotFoundError: No module named 'requests'

Pyinstaller生成EXE无法正常执行

3. Configparser库读取ini配置出现字符识别异常情况

※ 此问题严格来说不属于pyinstaller产生的问题,而是字符问题
Pyinstaller生成EXE无法正常执行

[问题解决]

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

Pyinstaller生成EXE无法正常执行

3. Windows Notepad存储为UTF-8时,自动在文件头增加"\xfe\xff"隐藏字符引起
  • 不要运用Winodws自带的notepad编辑,而是通过其他工具编辑并保存为[UTF-8 无BOM] 格式。
    Pyinstaller生成EXE无法正常执行
  • 如果无法控制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)  
相关标签: Scripts&Tools