一、如何Python转 exe
1、安装 pyinstaller
pip insatll pyinstaller
2、使用 pyinstaller
(1)打包成文件夹
pyinstaller -D xx.py
(2)打包成文件
pyinstaller -F xx.py
(3)打包时引入第三方库(如PyQt5)
pyinstaller --paths 库路径 -F -w xx.py
二、爆仓因果与解决方案
1、现象
频繁调用转换后的 xx.exe 发现磁盘文件夹 C:\Windows\Temp 或 C:\Users\用户名\AppData\Local\Temp 下产生了大量名为 _MEIxxxx 的文件夹,几乎要爆满 磁盘
2、原因
pyinstaller 的伪官方说明如下:
“官方”链接:https://pyinstaller.readthedocs.io/en/v3.3.1/operating-mode.html
3、解决
(1)方案一
方法:指定爆仓路径,避免权限不足引起的无法自动删
优点:省事省心
缺点:不稳定,打包指令复杂了点
pyinstaller --runtime-tmpdir 指定爆仓路径 -F xx.py
(2)方案二
方法:动态获取当前运行程序所使用的 _MEIxxxx 路径,运行结束后 os.remove
优点:稳定靠谱
缺点:写代码
# !/usr/bin/python3
# coding: utf-8
# gc.py
import os
import re
import sys
def clear():
for path in sys.path:
if re.match(r'^_MEI\d+$', os.path.basename(path)):
if os.path.exists(path):
os.remove(path)
# !/usr/bin/python3
# coding: utf-8
# demo.py
import os
import sys
import traceback
# not using os.path.abspath(__file__)
work_dir = os.path.dirname(os.path.abspath(sys.argv[0]))
print('sys.path.append("%s")' % work_dir)
sys.path.append(work_dir)
import gc
try:
pass
except:
traceback.print_exc()
finally:
gc.clear()