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‘]

  

时间: 2024-12-19 14:11:33

Python 打包工具cx_freeze 问题记录及解决办法的相关文章

[转]Python打包工具

作者:Tarek Ziadé,翻译:张吉 原文:http://www.aosabook.org/en/packaging.html 转载地址:http://www.ituring.com.cn/article/19090 14.1 简介 对于如何安装软件,目前有两种思想流派.第一种是说软件应该自给自足,不依赖于其它任何部件,这点在Windows和Mac OS X系统中很流行.这种方式简化了软件的管理:每个软件都有自己独立的“领域”,安装和卸载它们不会对操作系统产生影响.如果软件依赖一项不常见的类

python安装markupsafe模块时卡死的解决办法

起因: 升级OS X从10.8到10.9,会发现在安装python的markupsafe模块时一直卡住. 当时的机器环境是: OSX 10.9, XCode 4.6.2, Python 2.7.6, Apple LLVM version 4.2 (clang-425.0.28) (based on LLVM 3.2svn) 界面一直停留在下面的情况 mbp:MarkupSafe-0.23 $ python setup.py install running install running bdis

PYTHON -MYSQLDB安装遇到的问题和解决办法

目前下载的mysqldb在window下没有exe安装包了,只有源码. 使用python setup.py install 命令安装, 报错如下: 异常信息如下: F:\devtools\MySQL-python-1.2.3>pythonsetup.py build Traceback (most recent call last): File "setup.py", line 15, in <module> metadata, options = get_confi

MTK刷机工具Flash_Tool部分4032错误解决办法

MTK刷机工具Flash_Tool部分4032错误解决办法 先说明一点,这个办法不是万能的,我测试解决了以下两种情况下的4032: 1.本来正常的开发板,因为一次刷机失败后就一直变4032了 2.新开发板,第一次刷机就4032(在硬件正常的情况下,如果硬件有问题的话,呵呵,老夫掐之一算,累死也刷不进去) 至于会不会对其它一些情况的4032有解救作用,还待大家一起验证! 方法: 第一步: 使用windows版本的Flash_Tool,加载镜像文件后不要全部刷入,在下方的列表里只选择以下五项: pr

Python打包工具setuptools的使用

将我们写的Python程序发布成包后,可以使其能够安装使用. 在项目上测试的时候,某些情况下,可以将Python打包,然后上传到测试服务器,安装测试. setuptools是常用的打包工具. 一个简单的setup.py文件如下: from setuptools import setup, find_packages setup( name = "my_demo", version = "0.1", packages = find_packages() ) 其中,na

python程序一直在后台运行的解决办法

刚写了个python程序,要一直在后台运行,即使断开ssh进程也在,下面是解决办法: 假如Python程序为test.py 编写shell脚本start.sh #!/bin/bash python test.py & chmod +x start.sh ./start.sh

python打包工具distutils、setuptools分析

在上一篇博文中总结了python中导入包,安装包一条完整的线路.其中有一个有意思的知识点,安装包的方式有很多种,模块和包管理中打包,发布,安装也是值得研究的内容. python中安装包的方式有很多种: 源码包:python setup.py install 在线安装:pip install 包名(linux) / easy_install 包名(window) python包在开发中十分常见,一般的使用套路是所有的功能做一个python模块包,打包模块,然后发布,安装使用.打包和安装包就是最常见

最详细的Python打包工具:Pyinstaller实战指南,如丝滑般体验

写了个吊炸天的Python项目,把我和左手相处的时间都赔上了.但出于版权考虑,我不太想让使用方直接用我的代码,毕竟Python代码给出去,就真的收不回来了. 想给客户演示的时候,不想那么墨迹的打开dos cmd 或者 terminal ,然后运行 python app.py 这样的命令行.最好是客户双击,完事儿.就像有人在那自己动一样-- PyInstaller 来了,他就是这么一款帮助我们把整个项目完整打包的工具.目前已经兼容Py3.7,以及 Mac App 和 Windows Exe. 文档

pyinstaller打包exe文件闪退的解决办法

pyinstaller是python下目前能打包py文件为windows下的exe文件的一个非常友好易用的库!但是,小爬每次用pyinstaller打包时也总是遇到一些难题,有时网上搜了一圈,也没看到合适的答案.小爬因此决定把我的问题和后来的解决思路都写出来,供后来者参考! 事情是这样的,小爬最近编写了一个发票PDF文件的识别脚本:1.用到PyMuPDF中的fitz模块来提取发票的二维码图片元素:2.用到pyzbar来提取二维码信息:3.用pdfplumber(该库依赖于pdfminer.six