[转载] Linux+树莓派3开发总结——cx_Freeze打包Python3程序(工程文件)

参考链接: 在Python中使用CX_Freeze

Python是一个脚本语言,被解释器解释执行。它的发布方式: 

 .py文件:对于开源项目或者源码没那么重要的,直接提供源码,需要使用者自行安装Python并且安装依赖的各种库。(Python官方的各种安装包就是这样做的)  .pyc文件:有些公司或个人因为机密或者各种原因,不愿意源码被运行者看到,可以使用pyc文件发布,pyc文件是Python解释器可以识别的二进制码,故发布后也是跨平台的,需要使用者安装相应版本的Python和依赖库。  可执行文件:对于非码农用户或者一些小白用户,你让他装个Python同时还要折腾一堆依赖库,那简直是个灾难。对于此类用户,最简单的方式就是提供一个可执行文件,只需要把用法告诉Ta即可。比较麻烦的是需要针对不同平台需要打包不同的可执行文件(Windows,Linux,Mac,...)。  

本文主要就是介绍最后一种方式,.py和.pyc都比较简单,Python本身就可以搞定。将Python脚本打包成可执行文件有多种方式,本文重点介绍cx_Freeze,其它仅作比较和参考。 

Freezing Your Code 

各种打包Python程序对比  点击打开链接 

 

各种打包工具的对比如下(来自文章Freezing Your Code): 

SolutionWindowsLinuxOS XPython 3LicenseOne-file modeZipfile importEggspkg_resources supportbbFreezeyesyesyesnoMITnoyesyesyespy2exeyesnonoyesMITyesyesnonopyInstalleryesyesyesnoGPLyesnoyesnocx_FreezeyesyesyesyesPSFnoyesyesnopy2appnonoyesyesMITnoyesyesyes 

 

 我要打包的环境是Linux+Python3,故根据情况我们采用cx_Freeze打包程序  

   

  

  

 Python3程序打包步骤: 

  

 1、下载cx_Freeze-4.3.4.tar.gz源码 

 2、解压源码到某个目录 

 3、打开终端到解压目录 

 4、执行python3 setup.py build 

 这编译会出错  

 build/temp.linux-x86_64-2.7/source/bases/Console.o:在函数‘GetImporterHelper’中: /home/bill/Downloads/cx_Freeze-4.3.3/source/bases/Common.c:211:对‘PyObject_CallMethod’未定义的引用 /home/bill/Downloads/cx_Freeze-4.3.3/source/bases/Common.c:215:对‘PyErr_Clear’未定义的引用 build/temp.linux-x86_64-2.7/source/bases/Console.o:在函数‘GetDirName’中: /home/bill/Downloads/cx_Freeze-4.3.3/source/bases/Common.c:66:对‘PyString_FromStringAndSize’未定义的引用 build/temp.linux-x86_64-2.7/source/bases/Console.o:在函数‘FatalError’中: /home/bill/Downloads/cx_Freeze-4.3.3/source/bases/Console.c:24:对‘PyErr_Print’未定义的引用 /home/bill/Downloads/cx_Freeze-4.3.3/source/bases/Console.c:25:对‘Py_FatalError’未定义的引用 build/temp.linux-x86_64-2.7/source/bases/Console.o:在函数‘SetExecutableName’中: /home/bill/Downloads/cx_Freeze-4.3.3/source/bases/Common.c:93:对‘PyString_FromString’未定义的引用 /home/bill/Downloads/cx_Freeze-4.3.3/source/bases/Common.c:115:对‘PyString_FromStringAndSize’未定义的引用 /home/bill/Downloads/cx_Freeze-4.3.3/source/bases/Common.c:136:对‘PyString_FromString’未定义的引用 build/temp.linux-x86_64-2.7/source/bases/Console.o:在函数‘FatalError’中: /home/bill/Downloads/cx_Freeze-4.3.3/source/bases/Console.c:24:对‘PyErr_Print’未定义的引用 

 查了一下  网上有修改setup.py  将其中的if not vars.get("Py_ENABLE_SHARED", 0):修改成if True: 

 就可以了 

 5、执行安装命令sudo python3 setup.py install 

 6、此时再次打开一个终端,输入命令:cxfreeze --help有内容说明安装 

 7、打包命令输入: 

 查询版本: 

 cxfreeze --version  打包文件(包含运行需要的文件):  

 cxfreeze ~/Desktop/Nt2000_Python1/Nt_Main.py --target-dir ~/Desktop/setup 

 格式为:cxfreeze  文件绝对路径 --target-dir 打包到目标可执行文件夹路径 

 打包成一个可执行文件命令: 

 cxfreeze D:/hello.py --target-dir D:/123 --no-copy-deps

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值