基于pyinstaller封装python程序为exe文件

基于pyinstaller封装python程序为exe文件过程可能会遇到很多问题,主要可能会是相关封装的库没有安装,需要要根据实际遇到的问题去百度解决,这里记录几个常见的问题。
封装时在终端使用命令
1.假设封装example.py

pyinstaller -F example.py

2.如果有中文路径或命名的程序,可能会报utf-8的问题,这时需要先在终端输入chcp 65001

chcp 65001

然后再输入

pyinstaller -F example.py

3.报错:RecursionError:maximum recursion depth exceeded
在报这句话的时候,程序应该已经编译生成了example.spec文件,打开这个文件,在开头添加这两行代码:

import sys
sys.setrecursionlimit(1000000)    #可以更改数字来改变maximum

然后再终端输入如下命令执行封装

pyinstaller -F example.spec

4.报错:ModuleNotFoundError: No module named ‘tensorflow.python._pywrap_tensorflow_internal’
去到anaconda安装路径下:

D:\anaconda\Lib\site-packages\tensorflow\python

找到这个文件:

_pywrap_tensorflow_internal.pyd

复制到example.py同级目录下,重命名为:

tensorflow.python.__python._pywrap_tensorflow_internal.pyd

运行命令

pyinstaller -F .\example.py --add-data "./tensorflow.python.__python._pywrap_tensorflow_internal.pyd;."

pyinstaller 对 --add-data 的命令的解释为:
–add-data < SRC;DEST or SRC:DEST >
Additional non-binary files or folders to be added to the executable. The path separator is platform specific, os.pathsep (which is ; on Windows and : on most unix systems) is used. This option can be used multiple times.
即第一个参数SRC是要导入的数据,第二个参数DEST是导入的参数在运行时相对主程序的路径。
在windows下用; 分割,在linux下用: 分割。

参考:
https://blog.csdn.net/buchunjiedexin/article/details/79764604

然后像上面一样修改example.spec,然后运行命令:

pyinstaller -F example.spec

也就是报错3的解决方法。
经过多次测试,报错4暂时还是没有解决。

5.报错4解决办法
应该是tensorflow_gpu版本的问题,原来是1.8,后面用1.13版本轻易的成功解决了,因为需要GPU加速,对应的CUDA版本是10.0

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值