zoukankan      html  css  js  c++  java
  • pyqt5 笔记(三)py2exe 实现代码打包exe

    python3.4

    安装64位的版本 py2exe

    下载地址: https://pypi.python.org/pypi/py2exe/0.9.2.0#downloads

    cmd——>进入pyfile/pyqt5的文件目录下,dir,执行python setupp.py py2exe

    很好的教程:      http://www.doc88.com/p-7357353064359.html

            http://www.cnblogs.com/qq78292959/p/3510186.html


    setupp.py

     1 from distutils.core import setup
     2 import py2exe
     3 
     4 
     5 #sys.argv.append('py2exe')
     6 
      packages=[] 7 py2exe_options = { #py2exe中的options字典 8 "includes": ['sip'], 9 "dll_excludes": ["MSVCP90.dll",], 10 "compressed": 2, 11 "optimize": 2, 12 "ascii": 0, 13 "bundle_files": 3,
           "packages":packages,
          "dist_dir":"MyPrpgram"    #生成MyProgram文件夹,放好多代码
    14 } 15 16 setup( #py2exe拓展的distutils setup参数: 17 windows = [ #列表,包含需要被转换为GUI exe的脚本 18 { 19 "script":"index.py", 20 # "icon_resources":[(1,"myicon.ico")] #为程序添加图标 21 } 22 ], 23 zipfile = "myzip.zip", #产生共享压缩文件的名字;可以指定一个子目录:默认是'library,zip';如果值为none,文件将会被打包进可执行文件而不是library.zip 24 options = {'py2exe': py2exe_options} #字典, 25 )

    遇到问题:

    UnicodeDecodeError:'gbk' codec can't decode byte 0xaf  illegal multibyte sequence

    尝试解决1:试了很多种编码方式   # -*- coding:utf-8 -*-     # -*- coding: gbk -*-

    尝试解决2:在windows的cmd中设置支持UTF-8编码

    CHCP命令:显示or设置活动代码页的编号
    GB2312 对应的是936
    UTF8对应的是65001
    输入65001,然后再cmd窗口上右键,选择属性,设置字体,选择Lucida Console 即可~

    尝试解决3:添加

    import sys
    import io

    sys.stdout = io.TextIOWrapper(sys.stdout.buffer,encoding='utf-8')

    都失败~

    分析问题:

    报错的异常是   
    UnicodeDecodeError: ‘gbk’ codec can’t decode bytes in position 2-3: illegal multibyte sequence

    UnicodeDecodeError: Unicode的解码(Decode)出现错误(Error)了,

    • 你当前正在处理某种编码类型的字符串
    • 此处你要处理字符串,是想要将该字符串去解码decode,变成Unicode
    • 但是将该字符串解码变成Unicode期间,却出错了

    ‘gbk’ codec can’t decode:

    • 你此处,要将字符串解码为Unicode,是以gbk编码的方式去解码(该字符串变成Unicode)的
    • 但是此处通过gbk的方式,却无法解码(can’t decode )
    • 注:此处的codec,意思是:编解码(器),是Python内部的模块,用来编码或解码(字符串)的

    bytes in position 2-3  :  定位具体错误的位置

    illegal multibyte sequence  :  非法的,多字节,序列。没法解码

    最终解决办法:去除代码中所有中文字符,包括注释,然后就可以了。。。。

    遇到问题:This application failed to start because it could not find or load the Qt platform plugin "windows"

    原因是环境变量没有添加。

    在环境变量中增加:

    QT_QPA_PLATFORM_PLUGIN_PATH

    C:Python34Libsite-packagesPyQt5plugins <<-------PyQt5的plugins文件夹所在位置(新建系统变量)


    简单的小例子

    sett.py

    1 __author__ = 'yangyang5'
    2 from distutils.core import setup
    3 import py2exe
    4 
    5 setup(
    6     console=['hi.py']       #列表,包含需要被转换为控制台exe的脚本
    7 )

    hi.py  print('hello world~')

    去cmd中执行 python sett.py py2exe

    之后输出一系列打包过程

    成功后,会生成build和dist2个文件夹,build是工作时的空间,完成后会自动消失。dist中有exe和运行时需要的文件

    试一试打包成功的exe

    进入cmd,.dist文件夹,运行 hi.exe

    成功~

  • 相关阅读:
    写给自己:青年员工交流会会议记录
    写给自己:金融小白的考证之路
    写给自己:入职初体验
    反欺诈体系
    政策&定价&风控审批策略
    你还在寻找Navicat的破解版本?你应该了解开源免费的DBeaver
    规则引擎在IoT的重要性?
    轻松上手SpringBoot Security + JWT Hello World示例
    Kafka 系列-1
    JDK14-ZGC调研初探
  • 原文地址:https://www.cnblogs.com/mogujiang/p/5630867.html
Copyright © 2011-2022 走看看