zoukankan      html  css  js  c++  java
  • Pyinstaller打包文件

    、安装及基本操作

    Pyinstaller可以使用pip安装,在命令行下输入下面这行就可以了。

    pip install pyinstaller

    如果下载安装包,那么要注意下载相应的win32/64版本,建议所有的程序都统一成32位或是64位版本,这样会减少很多问题。

    安装完毕之后,就可以通过以下命令打包了

    先转到主脚本所在的地址,例如:

    cd C:UsersAdministratorprojects	omato

    然后执行如下命令:

    pyinstaller start.py -F

    其中start.py为主脚本,主脚本中调用的模块文件会被自动打包。第三个参数是操作命令,常用的命令有

    -F 打包成单个文件
    -D 打包成单个文件夹形式
     
    -c 控制台模式,执行程序会跳出控制台,
    -w 窗口模式,不会跳出控制台 

    基础的命令就这些,程序名和图标等建议在spec文件中设置。

    二、文件调用(音频,图片等)

    一开始打包时便不清楚文件调用问题,因此文件一旦移动到别处就没法正常调用。后来看到别人的教程,但这部分也是模棱两可,让人理解不了。后来结合官方文档和别人的教程,终于弄清楚了。

    首先在脚本定义一个读取相对路径的函数:

    复制代码
     1 Import os
     2 Import sys
     3  
     4 def resource_path(relative_path):
     5     """
     6     定义一个读取相对路径的函数
     7       """
     8     if hasattr(sys, "_MEIPASS"):
     9         base_path = sys._MEIPASS
    10     else:
    11         base_path = os.path.abspath(".")
    12     return os.path.join(base_path, relative_path)
    复制代码

    然后在需要调用文件的地方用如下格式包裹:

    resource_path('resources/complete.wav')

    然后在生成的.spec文件exe = EXE()中加入下面这行:

    [('resources/complete.wav',r'C:UsersAdministrator
    esourcescomplete.wav','music'),],

    元组内的三个项:

    第一个为代码中resource_path包裹的地址;

    第二个是文件的实际地址;

    第三个是打包进程序的文件名字。

    这样打包后文件会被正确引用。

    如下所示:

    复制代码
     1 exe = EXE(pyz,
     2           a.scripts,
     3           a.binaries,
     4           a.zipfiles,
     5           a.datas,
     6           [('resources/complete.wav',r'C:UsersAdministratorprojectsDiary
    esourcescomplete.wav','music'),],
     7           name='Diary',  # 这里可以设置可执行文件的名字
     8           icon='diary.ico',# 设置图标
     9           debug=False,
    10           strip=None,
    11           upx=True,
    12           console=True ) # 是否开启控制台模式
    复制代码

    注意加地址前的r以及行尾的逗号,更新过spec文件后,再重新打包只需要执行pyinstaller start.spec 就可以了。

    三、添加图标

    图标的设置有两种方式,一种是在执行打包命令时加入下面这句:

    --icon=xxx.ico

    第二种(推荐)是用文本编辑器或记事本打开执行打包后文件夹内新生成的xxx.spec文件,然后在exe =()中加入一行:

    icon = ’xxx.ico‘

    (见上面的代码第八行)

    xxx.ico 为你要设置的图标文件,其他格式需要转换成ico格式,可在这里在线转换。

    (图标文件要放在程序根目录下)

    四、其他

    1. 64windows上打包的程序不能在32位上运行,反之却可以。
    2. 每次更改完代码或是spec文件,只需要再重新执行一下pyinsyaller start.spec -F就可以了

    五、替代品

    如果pyinstaller没有解决你的问题,那么你可以尝试一下下面这两个替代品:

    py2exe

    cx_Freeze

  • 相关阅读:
    Docker私有仓库
    Swarm配置文件管理
    Docker Swarm高可用性
    Docker集群管理Swarm数据持久化
    Swarm使用原生的overlay网络
    Docker Swarm集群部署
    Docker管理工具-Swarm
    Docker多主机网络 OpenvSwitch
    Docker网络 Weave
    Docker Macvlan
  • 原文地址:https://www.cnblogs.com/Mike2019/p/13359056.html
Copyright © 2011-2022 走看看