最近有个脚本,为避免多次重跑,然后就准备制作成一个exe,方便其他人员执行
制作步骤:
1、安装pyinstaller,用最简单的pip 即可
pip install pyinstaller
2、执行文件,如果需要输入参数的话,就用python 的input函数,到时候运行时会自动弹出弹窗
#假如这个文件为test.py
import numpy as np
import cv2
from pandas import DataFrame #最好指定包名,如果pandas全部引入,脱离环境打包将会非常大
def main():
print('程序开始执行')
#这个input到时候就会有cmd,输入参数用,这里提示最好用英文吧,中文我这报错
text = input('what is your name?')
print(text )
# 增加调用main()函数
if __name__ == '__main__':
main()
3、然后开始对这个py文件进行打包
pyinstaller -F test.py #加-F是打离线包,就是拷贝到别人没有python环境的地方,也能用
4、遇到打包报错:RecursionError: maximum recursion depth exceeded,参考
参考这篇文章,是执行完上面这一步,会生成一个过度文件
test.spec,打开test.spec,在上面加入下面两句话,入下图所示:
import sys
sys.setrecursionlimit(5000)
5、encode 报错
pyinstaller UnicodeDecodeError: ‘utf-8’ codec
can’t decode byte 0xce in position 110: invalid continuation byte
这个有的时候会报decode的报错,根据这个链接的解决方案,是把报错的那个 Lib\site-packages\PyInstaller\compat.py这个文件里面,加个参数
out = out.decode(encoding)
#改为
out = out.decode(encoding, errors='ignore')
6、ModuleNotFoundError: No module named 'numpy.core._dtype_ctypes’
这个是找不到这个包,解决办法,点名引用他:
import numpy.core._dtype_ctypes
7、生成exe文件
然后再执行下面的
pyinstaller -F test.spec
最后在dist文件夹下面,就会有test.exe,然后就可以直接拷贝运行就好。
就可以了果还遇到其他问题,再继续百度搜索一下。