zoukankan      html  css  js  c++  java
  • PyInstaller打包python脚本

           因为写了一个小工具,自动生成需求统计的内容,但是同事又不可能在电脑上也装上python以及相关的包依赖(别人一看就觉得太麻烦而且太冗余),于是就想着将写好的python脚本打包成exe,直接双击使用,方便快捷。

    说干就干,先是花点时间写完了脚本;然后搜索了相关的关键词,找到了py2exe、PyInstaller、cx_Freeze等工具,最后确定使用PyInstaller

    使用PyInstaller有几个原因:

    • PyInstaller现在仍然在更新
    • PyInstaller使用方法简单,py2exe比较繁琐
    • PyInstaller网上教程比较多

    安装PyInstaller

    推荐使用pip安装

    pip install pyinstaller

    安装完后,直接输入pyinstaller

    usage: pyinstaller-script.py [-h] [-v] [-D] [-F] [--specpath DIR] [-n NAME]
                                 [-p DIR] [--hidden-import MODULENAME]
                                 [--additional-hooks-dir HOOKSPATH]
                                 [--runtime-hook RUNTIME_HOOKS]
                                 [--exclude-module EXCLUDES] [--key KEY] [-d] [-s]
                                 [--noupx] [-c] [-w]
                                 [-i <FILE.ico or FILE.exe,ID or FILE.icns>]
                                 [--version-file FILE] [-m <FILE or XML>]
                                 [-r RESOURCE] [--uac-admin] [--uac-uiaccess]
                                 [--win-private-assemblies]
                                 [--win-no-prefer-redirects]
                                 [--osx-bundle-identifier BUNDLE_IDENTIFIER]
                                 [--distpath DIR] [--workpath WORKPATH] [-y]
                                 [--upx-dir UPX_DIR] [-a] [--clean]
                                 [--log-level LEVEL] [--upx UPX]
                                 scriptname [scriptname ...]
    pyinstaller-script.py: error: the following arguments are required: scriptname
    

    可以看到PyInstaller的信息,说明安装完成,可以使用了;详细帮助可以pyinstaller -h查看。

    使用PyInstaller

    PyInstaller的使用非常简单:

    # 打包成一个文件
    pyinstaller -F test.py
    # 打包成文件夹(默认)
    pyinstaller test.py

    因为要精简到底,所以我选择打包成一个文件。

    先cd到pyinstaller的安装文件夹,然后输入命令 pyinstaller -F 要打包的文件的路径地址,如下

    执行完之后,看下下面的日志,说明打包成功

    打包完成后,打开dist文件夹,里面的那个exe文件就是打包好的程序,运行测试一下是否打包成功。

    PyInstaller选项说明

    • -D, --one-dir打包成一个文件夹,默认
    • -F, --one-file打包成一个exe文件
    • -p DIR, --paths DIR添加路径,一般用来添加程序所用到的包的所在位置
    • -c, --console, --nowindowed提供程序视窗,程序有输入输出的界面,默认
    • -w, --windowed, --noconsole无视窗,程序后台运行
    • -i <FILE.ico or FILE.exe,ID or FILE.icns>, --icon <FILE.ico or FILE.exe,ID or FILE.icns>添加icon图标

     

    打包过程遇到的问题

    1、AttributeError: module 'enum' has no attribute 'IntFlag'

     原因:

    This is likely caused by the package enum34. Since python 3.4 there's a standard library enum module, so you should uninstall enum34, which is no longer compatible with the enum in the standard library since enum.IntFlag was added in python 3.6.

    这可能是由包Enum34引起的。因为Python3.4有一个标准库枚举模块,所以您应该卸载Enum34,因为在Python3.6中添加了Enum.Intflag,所以它不再与标准库中的枚举兼容。

    解决:pip uninstall enum34   #卸载enum34

  • 相关阅读:
    『NiFi 节点本地流与集群流不一致导致集群加入失败』问题解决
    『NiFi 学习之路』简介
    『NiFi 学习之路』自定义 —— 组件的自定义及使用
    『NiFi 学习之路』使用 —— 主要组件的使用
    『NiFi 学习之路』把握 —— 架构及主要部件
    TabLayout与ViewPager同步后Tab的标题不显示
    Word 为标题设置段前段后间距设置与异常
    Word 中将正文中的参考文件标号链接到参考文献具体条目
    Linux字体美化实战(Fontconfig配置)(转)
    Linux字体美化实战(Fontconfig配置)(转)
  • 原文地址:https://www.cnblogs.com/cxx1/p/15528680.html
Copyright © 2011-2022 走看看