zoukankan      html  css  js  c++  java
  • Python 打包工具cx_freeze 问题记录及解决办法

      在节前的最后一天,解决了打包过程中遇到的所有问题,可以成功运行了!真是个好彩头,希望新的一年一切顺利!

      以下是在使用cx_freeze过程中遇到的问题及解决办法(Win7)

    1. 问题描述:运行exe,启动无数个主程序,导致系统无法使用

         原因:在程序中使用了multiprocessing的包

         解决办法:在主文件if __name__ == "__main__":后,添加multiprocessing.freeze_support(),一定要在添加在最开始处

      2. 问题描述:运行后,提示在freeze_support中sys.stdout.flush处异常

                

        原因:使用的PyQT作为界面,没有控制台

        解决办法:在调用multiprocessing.freeze_support()前,重定向stdout和stderr,添加:sys.stdout = io.StringIO()和 sys.stderr =  io.StringIO()

      3.使用shelve模块,IDE下调试可以正常使用,打包后无法使用

        原因:shelve 的 open 函数在运行中还会装入其它的数据库管理模块,无从了解还需要哪些额外的包,故在打包时就漏掉了一些必要的模块

        解决办法:修改打包脚本,添加如下内容:

    packages = []
    for dbmodule in ['dbhash', 'gdbm', 'dbm', 'dumbdbm']:
        try:
            __import__(dbmodule)
        except ImportError:
            pass
        else:
            # If we found the module, ensure it's copied to the build directory.
            packages.append(dbmodule)

    options = {
        'build_exe': {
            'includes': 'atexit',
            "packages": packages
        }

    }

    4.使用inspect.getsourcelines异常OSError: could not get source code

      原因:打包后,都是pyc文件,没有源代码,导致动态获取代码失败

      解决办法:将包含所需源码的py文件打包到library.zip文件中,在‘build_exe'参数中,增加'zip_includes':['path\source.py']

      

  • 相关阅读:
    AcWing 225. 矩阵幂求和 (矩阵快速幂+分治)打卡
    AcWing 220.最大公约数 欧拉函数打卡
    2019 牛客暑期多校 B generator 1 (矩阵快速幂+倍增)
    2019 牛客暑期多校 G subsequence 1 (dp+组合数)
    LINUX查看文件大小
    TFTP error: 'Only absolute filenames allowed' (2)
    zmediaboard-Hi3518参数及配置
    移植RTL8188CUS USB-WIFI(移植失败)
    如何安裝繁體暴雪應用程式
    MySQL添加用户、删除用户与授权
  • 原文地址:https://www.cnblogs.com/xiaoyu-10201/p/5184110.html
Copyright © 2011-2022 走看看