美文网首页Python3入门笔记及知识点整理python3笨办法学Python
打包python程序为电脑上可运行的程序(Pyinstaller

打包python程序为电脑上可运行的程序(Pyinstaller

作者: 残阳夕露 | 来源:发表于2019-11-01 17:44 被阅读0次
    查看所有Python相关学习笔记

    打包后exe文件 打包后的exe程序界面(此界面需自行在代码中组织)

    win版

    一、库文件安装

    安装相关库:

    pip install PyInstaller
    

    二、打包命令

    • 直接打包
      pyinstaller [参数] 需要打包的py文件
      
    • 通过spec文件打包(直接打包后会生成spec文件,可修改内部参数后根据spec打包)
      pyinstaller getmessagefromdb.spec
      
    • 直接打包时,各参数含义
    参数 含义
    -D 默认项,不写-F时,默认就是-D,将文件打包成一个文件夹
    -F 表示生成单个可执行文件(单个的exe文件)
    -w 表示去掉控制台窗口,这在GUI界面时非常有用。不过如果是命令行程序的话那就把这个选项删除吧!(如果打包错误需要再cmd窗口运行查看报错原因,则打包时需要去掉此参数)
    -p 表示你自己自定义需要加载的类路径,一般情况下用不到,(一般导入的库都在系统path路径内,所以不需要单独使用此参数)
    -i 表示可执行文件的图标(生成的exe文件对应的图标)
    --add-binary xxx 加入二进制文件
    • 直接打包后生成的spec文件内容


      image.png

    三、常见问题

    1. 打包后exe文件太大(超过100M)
      原因分析:说明调用的库太多或者对应环境中相关的库太多,
      解决方案:创建一个虚拟的环境,此环境仅安装必须的库,然后再次环境内打包。(本人使用的anaconda来创建的不同的python环境,建议使用minianaconda来管理python环境)

    2. 打包后运行exe文件提示:failed to execute script
      原因分析:在cmd窗口运行exe文件(打包时不要加-w参数,要不然看不到报错内容),查看具体原因
      解决方案:根据具体原因进行调整

    1. 打包时包含ibm_db库,打包后一直无法正常运行
      • 运行时报错:
        Traceback (most recent call last):
          File "case\getmessagefromdb.py", line 1, in <module>
            from lib.ConnectDB2 import ConnectDB2 as CDB
          File "d:\anaconda3\envs\py36\lib\site-packages\PyInstaller\loader\pyimod03_imp
        orters.py", line 627, in exec_module
            exec(bytecode, module.__dict__)
          File "lib\ConnectDB2.py", line 4, in <module>
            import ibm_db,traceback
          File "d:\anaconda3\envs\py36\lib\site-packages\PyInstaller\loader\pyimod03_imp
        orters.py", line 627, in exec_module
            exec(bytecode, module.__dict__)
          File "site-packages\ibm_db.py", line 10, in <module>
          File "site-packages\ibm_db.py", line 9, in __bootstrap__
          File "imp.py", line 343, in load_dynamic
        ImportError: DLL load failed: 找不到指定的模块。
        [1472] Failed to execute script xxx
        
      • 解决方法:
        1. 增加环境变量:-p xxx
        2. 打包时添加参数:--add-binary xxx
      • 具体命令(其中D:\Anaconda3\envs\py36是我的python安装路径)
        pyinstaller -F -w -p D:\Anaconda3\envs\py36\Lib\site-packages\clidriver\bin --add-binary D:\Anaconda3\envs\py36\Lib\site-packages\ibm_db_dlls\ibm_db.dll;.\ibm_db_dlls  -i sms.ico case/getmessagefromdb.py
        

    四、参考链接

    参考链接1:Python打包方法——Pyinstaller
    参考链接2:PyInstaller打包python脚本的一些心得
    参考链接3:用PyInstaller把Python代码打包成单个独立的exe可执行文件

    参考链接4:pyinstaller简洁教程
    参考链接5:解决pyinstaller打包时包含ibm_db,运行报错问题

    mac版

    一、库文件安装

    安装相关库:

    sudo pip install py2app
    

    二、打包命令

    1. 进入工程目录下面:
    cd  ProjectDirctory
    
    1. 生成 setup.py 文件:
    py2applet   --make-setup   MyApplication.py
    

    3.清空以前生成的编译文件:

    rm -rf build dist
    

    4.生成mac下的应用:

    python  setup.py  py2app 
    

    5.生成的应用在dist目录下面

    相关文章

      网友评论

        本文标题:打包python程序为电脑上可运行的程序(Pyinstaller

        本文链接:https://www.haomeiwen.com/subject/vblqbctx.html