zoukankan      html  css  js  c++  java
  • python打包代码做.exe文件

    步骤:

    1. pip安装支持的pyinstaller,“pip install pyinstaller”可先看一下底部的报错情况2,预先装好合适版本的pyinstaller

    2.准备一段要实现的代码,文件名为loooookfile.py 如下,是实现:将指定路径下的所有文件的完整路径打印出来,之后倒计时10s关闭窗口

     1 import os
     2 import time
     3 
     4 welcome = """
     5 ####################################################
     6 #                                                  #
     7 #    Ruirui's pyinstaller performance progrem      #
     8 #                                                  #
     9 #                   ver.20210302                   #
    10 ####################################################
    11 """
    12 print(welcome)
    13 
    14 
    15 
    16 target_path = input("please input the target file_path :")
    17 for root,dir,filename in os.walk(target_path):
    18     for name in filename:
    19         print(os.path.join(root,name))
    20 
    21 for i in range(10, 0, -1):
    22     print("
     after {}s the window will be closed".format(i), end="", flush=True)
    23     time.sleep(1)
    24 print("
      time is up !!!")

    3.然后进入cmd窗口,cd到loooookfile.py文件所在的目录下,执行

    pyinstaller -F -c Loooookfile.py

    会生成一个如图所示的文件及目录

     所生成的.exe文件就在dist文件夹中

    4.如果需要换环境使用,就把当前文件所在的文件夹打包压缩发送到新环境即可

    有可能出现的报错:

    1.

     即报错说dll文件的Permission denied

    ----解决办法是以管理员权限打开cmd,然后执行操作步骤3即可

    2.报错IndexError:tuple index out of range

    是因为版本不支持,默认安装的是最新版(4.几的版本),无法支持3.6版的python

    ----解决办法是去官网:https://github.com/pyinstaller/pyinstaller 下载源码,替换python安装目录下的Libsite-packagePyinstaller

    3.如果运行结果并不如预期,出现了闪现就关闭

    ----可以尝试在cmd窗口运行exe文件,看看会出现什么问题

    4.如果引入了其他的第三方库或者自己写的py文件或音视频图片,运行时并没有成功调用到

    ----可以留下原py文件或音视频文件及.spec文件,其他的文件夹删除,然后把引用到的文件加入到.spec的Analysis的datas中,格式也有要求的,要写成如图所示的格式(否则会报错“ValueError: too many values to unpack (expected 2)”)然后通过打包.spec文件来运行(打包命令为:    pyinstaller xxxx.spec   )

    5.如果报错说no module named xxxx

    ----一般这种情况下是缺少import的包,有2种方法,(前提是编译所在的电脑上安装了这个包的)1.重新编译,在指令最后加上参数--hidden-import 待导入的包名 2.删掉多余文件,留原py文件和spec文件,在spec文件的hiddenimport一栏中填入待导入的包名,然后通过打包.spec文件来运行(打包命令为:    pyinstaller xxxx.spec   )

    【关于参数的使用】

    -F   生成多个文件,可以使文件分布更清晰

    -D   生成一个文件夹,但文件内容会很杂乱不清晰

    -w   窗口模式打包,不显示控制台

    -c   后面跟图标的路径,作为.exe文件的icon

    --hidden-import   后面跟应用所需要的包(可以先默认打包,如果报错缺少哪个包再去.spec中编辑)

  • 相关阅读:
    MySQL事件(定时任务)
    MySQL存储过程
    WebSocket小记
    Python计算给定日期位于当年第几周
    报错解决——Failed building wheel for kenlm
    计算机基础系列之压缩算法
    计算机基础系列之内存、磁盘、二进制
    计算机基础系列之CPU
    常用正则表达大全
    报错解决——TypeError: LoadLibrary() argument 1 must be str, not None
  • 原文地址:https://www.cnblogs.com/RuiRuia/p/14468571.html
Copyright © 2011-2022 走看看